精华内容
下载资源
问答
  • 比如abcdefgabdef其中字符c和g不重复,返回c的小标,下标从0开始,那么是2package com.example.demo;import org.testng.annotations.Test;import java.util.ArrayList;import java.util.LinkedHashSet;public class ...

    比如abcdefgabdef

    其中字符c和g不重复,返回c的小标,下标从0开始,那么是2

    package com.example.demo;

    import org.testng.annotations.Test;

    import java.util.ArrayList;

    import java.util.LinkedHashSet;

    public class Test111 {

    String str1 = "abcdefgabdef";

    @Test

    public void fun1(){

    //LinkedHashSet 有序的set集合

    LinkedHashSet once = new LinkedHashSet<>();

    LinkedHashSet chongFu = new LinkedHashSet<>();

    ArrayList list = new ArrayList<>();

    for (int i = 0; i < str1.length(); i++) {

    boolean add = once.add(str1.charAt(i)); // 得到集合里所有出现过一次的元素

    if (!add) {

    chongFu.add(str1.charAt(i));// 得到集合里重复出现的元素

    }

    }

    boolean removeAll = once.removeAll(chongFu); // once里将存储所有不重复的元素

    list.addAll(once);

    System.out.println("所有不重复的字母:" + list);

    for (int i = 0; i < str1.length(); i++) {

    if (list.get(0) == str1.charAt(i)) {

    System.out.println("它的索引为:" + i);

    }

    }

    }

    @Test

    public void fun2(){

    ArrayList list = new ArrayList<>();

    for (int i = 0; i < str1.length(); i++) {

    int flag = -1;// 定义一个标志

    for (int j = 0; j < str1.length(); j++) {

    if (i == j) {// 如果是同一个元素跳过本次循环,继续下次循环

    continue;

    }

    // 如果这个元素不是第一次出现,将标志改变

    if (str1.charAt(i) == str1.charAt(j)) {

    flag = 1;

    }

    }

    // 未改变标志的元素,即只出现一次的元素

    if (flag == -1) {

    list.add(str1.charAt(i));

    } // if

    } // for

    System.out.println("所有不重复的字母:" + list);

    System.out.println("第一个不重复的字母为:" + list.get(0));

    for (int i = 0; i < str1.length(); i++) {

    if (list.get(0) == str1.charAt(i)) {

    System.out.println("它的索引为:" + i);

    }

    }

    }

    @Test

    public void fun3(){

    for (int i = 0; i < str1.length(); i++) {

    char charAt = str1.charAt(i);

    // 找出取出的元素第一次出现的位置

    int indexOf = str1.indexOf(charAt);

    // 找出取出的元素最后一次出现的位置

    int lastIndexOf = str1.lastIndexOf(charAt);

    // 如果是唯一的元素,第一次出现的位置和最后一次出现的位置应该相同

    // 如果相同了就没必要在继续走for循环了

    if (indexOf == lastIndexOf) {

    System.out.println(str1.charAt(indexOf));

    System.out.println(indexOf);

    return;

    }

    }

    }

    }

    BF算法

    BF算法,即Brute Force 算法的简称。用于检测某个字符串是否是另一个字符串的子串。

    子串的概念#

    假设字符串 X = ‘girlfriend‘ , Y = ‘friend‘ ,那么Y 就是 X的子串。同样的,end是friend的子串。

    BF算法的思路#

    BF算法的思路非常简单粗暴,就是从前到后一点点的匹配。例如: 子串 x= abcd | 主串为 y = abdabceabcde

    如果 x[0] = y[0] 继续比较 x[1] y[1] 继续下去,如果一直到 x[3]= y[3]时 则 x 整个串都匹配上了。

    如果 x[0] = y[0] 继续比较 x[1] y[i] 发现不等,那么就开始用 x[0] 比较 y[1] 然后继续 x[1] y[2]。

    public class TestBF {

    public static void main(String[] args) {

    System.out.println(isSubstring("abdabceabcde","abcd")); // true

    System.out.println(isSubstring("abdabceabcde","ff")); // false

    }

    private static boolean isSubstring(String main,String sub){

    if(main == null || sub == null) {

    return false;

    }

    if(main.length() < sub.length()) { // 子串不可比主串长

    return false;

    }

    if(main.equals(sub)) { // 主串,子串 相等的情况

    return true;

    }

    int len = main.length() - sub.length();

    for (int i = 0; i < len; i++) {

    boolean match = true;

    for (int j = 0; j < sub.length(); j++) {

    if(main.charAt(i+j) != sub.charAt(j)) {

    match = false;

    break;

    }

    }

    if(match) {

    return true;

    }

    }

    return false;

    }

    }

    原文:https://www.cnblogs.com/qianjinyan/p/10823525.html

    展开全文
  • oracle substr 下标从0 开始

    千次阅读 2018-08-27 09:01:15
    substr 下标从0 开始 instr 返回的数值,从1开始   oracle字符串处理 select substr(memo,instr(memo,'hourid=',1)+1,instr(memo,'&amp;',instr(memo,'=',1)+1)-instr(memo,'=',1)-1) from ZCSTATITEM ...

    substr 下标从0 开始

    instr 返回的数值,从1开始

     

    oracle字符串处理

    select substr(memo,instr(memo,'hourid=',1)+1,instr(memo,'&',instr(memo,'=',1)+1)-instr(memo,'=',1)-1) from ZCSTATITEM t where memo is not null and memo like'%hourid%' and substr(memo,instr(memo,'&',1)+1,instr(memo,'&',instr(memo,'&',1)+1)-instr(memo,'&',1)-1) is not null

     

     

    select t.memo, substr(memo,instr(memo,'=',1,2)+1,instr(memo,'&',1,2)) from ZCSTATITEM t where memo is not null and memo like '%hourid%'

    select substr(memo,instr(memo,'=',2),4) from ZCSTATITEM

     

    --   CA-CA1344-A-11OCT141250-D

    select instr('CA-CA1344-A-11OCT141250-D','-',1,1) from dual;  

    select instr('CA-CA1344-A-11OCT141250-D','-',instr('CA-CA1344-A-11OCT141250-D','-',1)+1)-instr('CA-CA1344-A-11OCT141250-D','-',1)-1 from dual

     

     

    select substr(name,instr(name,'-',1)+1,instr(name,'-',instr(name,'-',1)+1)-instr(name,'-',1)-1) from dual;  

     

    select substr(name,instr(name,'-',1,1)+1,instr(name,'-',1,2)-1-instr(name,'-',1,1)) from dual; 

     

    例子

    CA-CA1344-A-11OCT141250-D

    select substr(name,instr(name,'-',1)+1,instr(name,'-',instr(name,'-',1)+1)-instr(name,'-',1)-1) from test;  

    select substr(name,instr(name,'-',1,1)+1,instr(name,'-',1,2)-1-instr(name,'-',1,1)) from test;  

    六:接下我们再写一下,取第二个"-"到第三个"-"之间的字符串的方法:

    select substr(name,instr(name,'-',2,2)+1,instr(name,'-',2,3)-1-instr(name,'-',2,2)) from test;  

    展开全文
  • 不难看出当下标从0开始的时候,数组中各个元素的首地址计算公式是: a[i]地址 = 1000 + i*4。(其中1000是数组a的首地址,4是每个元素占的内存大小(int占4个字节大小)。) 可以看的出数组中根据下

    在讨论数组下标为什么从0开始之前我们先回顾一下数组有什么特点。
    数组优点:
    1.内存中占据连续的内存空间
    2.数据随机访问,也就是说获取数据非常高效
    那为什么说数组的数据可以随机访问而且取数据非常高效呢?
    下面我们来看这样一张图:
    微信图片_20201013171439.png
    上图是一个长度为10的整型数组,我们假设数组的首地址是1000。不难看出当下标从0开始的时候,数组中各个元素的首地址计算公式是:
    a[i]地址 = 1000 + i*4。(其中1000是数组a的首地址,4是每个元素占的内存大小(int占4个字节大小)。)
    可以看的出数组中根据下标随机访问的时间复杂度为O(1)非常高效。

    如果下标从1开始会怎么样呢?计算公式如下:
    a[i]地址 = 1000 + (i-1)*4。
    可以看的出下标从1开始比下标从0开始多了一个减法运算(即:i-1)。虽然我们口算一下感觉很简单,但是在cpu中需要转化成2进制,通过好几条指令来运算才能得到结果。

    试想一下,数组作为非常底层的一个数据结构,它的运算是要保证非常高效的,怎么可能多花费一次运算呢?所以数组的下标是从0开始,而不是从1开始。

    当然这只是我个人的一种观点,如果大家有更好的观点,可以留言讨论一下。

    好了,今天就说到这吧,希望对大家有所帮助。
    在这里插入图片描述
    欢迎关注我的微信号,我会持续的更新数据结构的相关内容,并领取很多视频学习资料。
    扫二维码关注公众号【Java程序员的奋斗路】可领取如下:
    1.学习资料: 1T视频教程(大约有100多个视频):涵盖Javaweb前后端教学视频、机器学习/人工智能教学视频、Linux系统教程视频、雅思考试视频教程,android.等
    2.项目源码:20个JavaWeb项目源码。

    展开全文
  • 关于数组的下标从0开始的问题 通过大二上学期的这门数据结构课,关于线性表(也可以认为是数组)的下标什么时候从0开始,什么时候从1开始有了如下简单的归纳,希望在以后的学习中可以进行再归纳 当在操作的时候需要...

    关于数组的下标从0开始的问题

    通过大二上学期的这门数据结构课,关于线性表(也可以认为是数组)的下标什么时候从0开始,什么时候从1开始有了如下简单的归纳,希望在以后的学习中可以进行再归纳

    • 当在操作的时候需要存储一些临时元素时,这时下标从1开始存储,0号单元用来存储临时元素

    如在进行直接插入排序时将 r[0] 处设为监视哨,存放当前需要比较的记录的关键字。
    又比如在QickSort中的Partition改进算法中,将枢轴记录暂存在 r[0]。

    • 当对线性表进行操作时,用到了循环的问题。

    比如循环队列,和2-路插入排序。
    可能这样的话可以通过直接对某个数据的位置运算后的位置取余(直接 mod 空间的大小)

    展开全文
  • 通过查找资料和文章,发现原因如下:原因1:历史原因,别人是这么干的C语言设计者用0开始计数数组下标,之后的Java,JavsScript等高级语言都模仿了C语言,或者说,为了在一定成都上减少C语言程序员学习Java的...
  • 不同于Mybatis的PageHelper插件,Elasticsearch分页搜索的下标从0开始,而PageHelper插件的下标从1开始!!!!
  • 欢迎大家加入,一起讨论学习模拟一个:public function test(){//自定义一个数组,模拟...array('0'=>array('id'=>'1','title'=>'我是标题','date'=>'2018-3-2'),'1'=>array('id'=>'2','title'=&...
  • 其中字符c和g不重复,返回c的小标,下标从0开始,那么是2 package com.example.demo; import org.testng.annotations.Test; import java.util.ArrayList; import java.util.LinkedHashSet; public ...
  • 如果从0开始,则a[i]的地址= 首地址 + i*每个数据所占的长度;如果从1开始,则a[i]的地址= 首地址 + (i-1)*每个数据所占的长度。是不是前一种更好计算呢。再举个例子:1、数组在内存中申请是,所申请的内存是一段连续...
  • json_encode时数组下标从0开始会失败,无法把数组转成json字符串,这样存储到数据库会有问题,这个时候在结尾加上JSON_FORCE_OBJECT就能解决 json_encode($arr_data,JSON_FORCE_OBJECT)  ...
  • 下标从0开始的KMP代码

    2010-10-10 22:19:00
    刚刚笔试完创新工厂,里面考到了KMP,算我幸运,笔试之前才看过了KMP,...接着,我就自己写了这个下标从0开始的KMP代码 如果有问题,欢迎大家拍砖。 #include <iostream> #include <string> usi...
  • 数组下标从0开始

    千次阅读 2016-06-21 16:19:20
    数组下标 偏移量
  • 7-1 求最大值及其下标 本题要求编写程序,找出给定的n个数中的最大值及其对应的最小下标(下标从0开始)。
  • 为什么计算机语言中的下标都是从0开始的?随着互联网的普及,各工种的泛码农化的现象越来越明显。对于没有学过计算机基础理论的小伙伴,可能会一直有一个困惑:为什么计算机语言中数据容器的下标都是从0开始的?而...
  • Kmp求next的值(下标从0开始的)

    千次阅读 2013-10-25 10:24:21
    Kmp求next的值(下标从0开始的)
  • 为什么计算机语言中的下标都是从0开始的?随着互联网的普及,各工种的泛码农化的现象越来越明显。对于没有学过计算机基础理论的小伙伴,可能会一直有一个困惑:为什么计算机语言中数据容器的下标都是从0开始的?而...
  • 对于学习过编程语言的人来说,相信绝大多数人都会有这样的疑问:我们平时计数,通常是从一开始计数的,为什么在编程语言中,数组的下标从0开始计算的呢?  这是因为,C语言中,下标的含意是:当前元素到第一个...
  • 有时候我们会用到一个数组的键(下标)默认从0开始的需求,让我们来看例子: 1 array (size=2) 2 4 => 3 array (size=3) 4 'goods_name' => string '发放是否' (length=12) 5 'goods_price' =>...
  • a2= [6,'7',False]print(a1,type(a1))print(a2,type(a2))#一个序列作为另一个序列的元素 a3 = [1,[2,3]]#空序列 a4 =[]print(a3,type(a3))print(a4) 序列元素的引用 这点和数组有点像了,我们可以通过下标(从0开始)...
  • 7-1 求最大值及其下标 (20分) 本题要求编写程序,找出给定的n个数中的最大值及其对应的最小下标(下标从0开始)。 输入格式: 输入在第一行中给出一个正整数n(1<n≤10)。第二行输入n个整数,用空格分开。 输出...
  • 背景有很多编程语言的数组都是 0 开始编号,你是否下意识地想过,为什么数组要 0 开始编号,而不是 1 开始呢? 1 开始不是更符合人类的思维习惯吗?那先看下数组的定义。 数组(Array)是一种线性表数据结构...
  • 背景有很多编程语言的数组都是 0 开始编号,你是否下意识地想过,为什么数组要 0 开始编号,而不是 1 开始呢? 1 开始不是更符合人类的思维习惯吗?那先看下数组的定义。 数组(Array)是一种线性表数据...
  • 数组的下标从0开始

    2013-03-24 21:24:09
    所以从0 方便多了. 在计算机里,存一个数,只要找到那个内存就好了;而往数组里存的时候,从第二个数开始就要有一个内存地址的偏移量,也就是刚才例子里你走的步数。 这个偏移量就是数组的下标。 在C语言里...
  • “HelloWorld”.subString(2,5); 输出结果:llo String字符串下标从0开始计算的
  • 欢迎大家加入,一起讨论学习模拟一个:public function test(){//自定义一个数组,模拟...array('0'=>array('id'=>'1','title'=>'我是标题','date'=>'2018-3-2'),'1'=>array('id'=>'2','title'=&...
  • /usr/bin/env pythonname = "ksunone"# 索引 (下标)"""所谓“下标”,就是编号,就好比超市中的存储柜的编号,通过这个编号就能找到相应的存储空间列表与元组支持下标索引好理解,字符串实际上就是字符的数组,所以...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 14,229
精华内容 5,691
关键字:

下标从0开始