Java面试题——在一个较长的字符串中查找较短字符串出现的次数。
实例:
/*
* 获取一个字符串中指定子串出的次数。比如说“hanbasdnbafllgnbahjnbakqqqqlnbaxi” 在这个字符串中,多有个nba?
*/
思路:
a.定义两个字符串。一个大串,一个小串。定义一个统计变量,默认次数为0。
b.在大串中查找一个小串第一次出现的索引,使用 indexOf()
如果存在,就返回索引值,这个时候,把统计变量++
如果不存在,就返回-1,这个时候,直接把统计变量返回即可。
c.把上面查找到的小串的一个字符的索引记录住。
然后从这个索引+小串长度,开始截取大串,重写赋值给以前的大串。
重复执行b.
Code:
/*
* 获取一个字符串中指定子串出的次数。比如说“hanbasdnbafllgnbahjnbakqqqqlnbaxi” 在这个字符串中,多有个nba?
*/
public class StringTest {
public static void main(String[] args) {
String str = "hanbasdnbafllgnbahjnbakqqqqlnbaxnbai";
String regex = "nba";
// 功能
int count = getCount(str, regex);
System.out.println(count);
}
/*
* 返回值:统计变量的值 int, 参数列表:大串和小串
*/
public static int getCount(String maxString, String minString) {
// 定义统计变量
int count = 0;
// 在大串中查找小串一次
int index = maxString.indexOf(minString);
// 小串的长度
int minStringLength=minString.length();
// 如果返回值不是-1,说明小串在大串中是存在的。
while (index != -1) {
// 统计变量++
count++;
// 把查找过的数据给截取掉,重新赋值给大串
maxString = maxString.substring(index + minStringLength);
// 在新的大串中查找一次小串
index = maxString.indexOf(minString);
}
return count;
}
}