1、获取一个字符串在另一个字符串中出现的次数
思路: 1,定义个计数器。2,获取kk第一次出现的位置。
3,从第一次出现位置后剩余的字符串中继续获取kk出现的位置。 每获取一次就计数一次。
4,当获取不到时,计数完成
程序示例:
package tan;
public class StringTest2 {
public static void sop(String str) {
System.out.println(str);
}
// 缺陷:每次截取字符串占用了很多内存空间
public static int getSubCount(String str, String key) {
int count = 0;
int index = 0;
//每次都是从0开始查,效率低
while ((index = str.indexOf(key)) != -1) {
sop("str" + str);
str = str.substring(index + key.length());
count++;
}
return count;
}
// 方法二:重构indexOf(key,index)[常用这个方法]
public static int getSubCount_2(String str, String key) {
int count = 0;
int index = 0;
//从index处开始查询,效率提高
while ((index = str.indexOf(key, index)) != -1) {
sop("index=" + index);
index = index + key.length();
count++;
}
return count;
}
public static void main(String[] args) {
/*
* String str = "kkabkkcdkkefkks";
*
* sop("count="+getSubCount(str,"kk"));
*/
String str = "kkabkkcdkkefkks";
// /sop("count====="+str.split("kk").length);不建议使用,不通用
sop("count=" + getSubCount_2(str, "kk"));
}
}