目录
获取一个字符串在另一个字符串中出现的次数。
获取一个字符串在另一个字符串中出现的次数。
方式一
思路:
* 1、利用indexOf(String str)方法返回指定字符串在此字符串中第一次出现的索引,如果索引不等于-1,则表示找到,count数加1
* 2、下次寻找从此次字符串返回的下标处+子串长度位置继续寻找
* 3、重复1、2直到遍历完字符串为止
代码
比如:获取“ ab”在 “abkkcadkabkebfkabkskab” 中出现的次数
/**
* @auther light
* @Description 获取一个字符串在另一个字符串中出现的次数。
* 比如:获取“ab”在 “abkkcadkabkebfkabkskab” 中出现的次数
*
* 思路:
* 1、利用indexOf()方法返回指定字符串在此字符串中的索引,如果索引不等于-1,则表示找到,
* 2、下次寻找从此次字符串返回的下标处+子串长度位置继续寻找
* 3、重复1、2直到遍历完字符串为止
* @create 2022-11-25 14:08
*/
public class StringAlgorithmsTest03 {
public static void main(String[] args) {
String str="abkkcadkabkebfkabkskab";
int count = getCount(str, "ab");
System.out.println(count);
}
public static int getCount(String mainStr,String subStr){
int mainLength = mainStr.length();
int subLength = subStr.length();
int count=0;
int index;
if(mainLength>=subLength){
while((index=mainStr.indexOf(subStr))!=-1){
count++;
mainStr=mainStr.substring(index+sunStr.length());
}
return count;
}else{
return 0;
}
}
}
运行结果如下
方式二(对方式一改进)
改进思路
mainStr=mainStr.substring(index+sunStr.length());
在方式一中此处代码每执行一次,就要新生成一个mainStr变量,现要提高效率,一直保持操作在原字符串上进行
使用indexOf(String str,int fromIndex)方法,返回指定子字符串在此字符串第一次出现处的索引,从指定索引开始,每次指定索引更新为上次索引位置+子串长度
改进代码
public class StringAlgorithmsTest03 {
public static void main(String[] args) {
String str="abkkcadkabkebfkabkskab";
int count = getCount(str, "ab");
System.out.println(count);
}
public static int getCount(String mainStr,String subStr){
int mainLength = mainStr.length();
int subLength = subStr.length();
int count=0;
int index=0;
if(mainLength>=subLength){
//方式二:对方式一的改进
while((index=mainStr.indexOf(subStr,index))!=-1){
index+=subStr.length();
count++;
}
return count;
}else{
return 0;
}
}
}