在给定的字符串中,我想找出由相同字符组成的最大子字符串的起始索引,并计算该子字符串在主字符串中出现的次数。
例如:“aaakkkbbkkkkk”在这种情况下,子串“kkkkk”的计数是5,起始位置是9。
到目前为止我的代码是:
String str = "aaakkkkbbkkkkk";
int count = 0;
//converting string into character array
char[] vals = str.toCharArray();
for(int i=0; i < vals.length; ){
for(int j=i+1; j<vals.length; j++){
//if value match then increment counter
if(vals[i]== str.charAt(j)){
counter++;
}
//else break from inner loop
break; //break from inner loop
}
//assign the index value of j to the i to start with new substring
i = vals.indexOf(j);
}
我的问题:无法存储计数器值,因为此计数器值是子字符串的实际出现次数,稍后我将比较子字符串和计数器出现次数。
我也不符合我的逻辑。
4条答案
按热度按时间tvokkenx1#
1.使用单独的变量来存储子字符串的第一次出现
2.制作其他将存储在最后一个序列长度的计数器
3.启动新序列时重置计数器
fjnneemd2#
我想这会对你有帮助,,,我知道它很小,很容易看到每一个,。。
快乐编码….@all。。。。。
2skhul333#
这种方法只需找到一个可能的子串,就可以有几个最大重复字符数相同的子串。下面是我的解决方案,它将返回一个列表。
代码如下:
导入java.util.list;导入java.util.arraylist;
公共类子字符串{
}
//此示例字符串的输出为:最长长度:2是char:1开始于:3最长长度:2是char:2开始于:6最长长度:2是char:3开始于:9
1hdlvixo4#
还有一个解决方案: