求短串在长串中出现的次数
/*
需求:求一个长串中出现短串的次数
第一种情况:使用不断截取长串的方法,但是这种情况不适合短串是重复字符的情况
第二种情况:短串是重复字符,不能使用不断截取长串的方法
*/
public class GetSubstring{
public static void main(String[] args){
//第一种情况:
// String s = "abcdabababcdefg";
// String ss = "ab";
/*
String tmp = s;
int count = 0;
while(tmp.length() > 0){
if(tmp.startsWith(ss)){
count++;
}
tmp = tmp.substring(1);
}
System.out.println(count);
*/
//第二种情况:
//短串中出现重复的字符,不能使用截取子串的方法
String s = "111";
String ss = "11";
//定义三个变量分别记录短串在长串中出现的索引,短串对比的次数,包含的次数
int start = 0;
int count = 0;
int sum = 0;
//遍历长串
for(int i = 0;i<s.length();){
if(s.charAt(i) == ss.charAt(0)){
//记录短串出现的索引
start = i;
//由于会出现长串索引越界情况,所以在遍历短串之前,先进行判断
if(start + ss.length() <= s.length()){
//遍历短串,用count记录遍历的次数
for(int j = 0;j<ss.length();j++){
if(ss.charAt(j) != s.charAt(start)){
break;
}
start++;
count++;
}
//如果count的值和短串长度相等,表明包含一个短串
if(count == ss.length()){
sum++;
count = 0;
i += s.length();
continue;
}
count = 0;
}
}
i++;
}
//打印短串的个数
System.out.println("sum:"+sum);
}
}
浙公网安备 33010602011771号