方法一:
**//这是bxdteacher的方法
package StringClass;**
/*
* 2,一个子串在整串中出现的次数。
* "nbaernbatynbauinbaopnba"
* 思路:
* 1,要找的子串是否存在,如果存在获取其出现的位置。这个可以使用indexOf完成。
* 2,如果找到了,那么就记录出现的位置并在剩余的字符串中继续查找该子串,
* 而剩余字符串的起始位是出现位置+子串的长度.
* 3,以此类推,通过循环完成查找,如果找不到就是-1,并对 每次找到用计数器记录。
*
*/
public class TeachingCodeStringTest_2 {
/**
* @param args
*/
public static void main(String[] args) {
String str = "nbaernbatnbaynbauinbaopnba";
String key = "nba";
int count = getKeyStringCount_2(str,key);
System.out.println("count="+count);
}
public static int getKeyStringCount_2(String str, String key) {//方法2
int count = 0;
int index = 0;
while((index = str.indexOf(key,index))!=-1){
index = index + key.length();
count++;
}
return count;
}
/**
* 获取子串在整串中出现的次数。
* @param str
* @param key
* @return
*/
public static int getKeyStringCount(String str, String key) {//方法1
//1,定义计数器。
int count = 0;
//2,定义变量记录key出现的位置。
int index = 0;
while((index = str.indexOf(key))!=-1){
str = str.substring(index+key.length());
count++;
}
return count;
}
}
方法二:
package StringClass;**//This is my way**
public class stringTest_2 {
public static void main(String[] args) {
String arr = "nbaernbatynbauinbaopnba";// 一个子串在整串中出现的次数
String match = "nba";
System.out.println(commonSubstring(arr, match));
}
public static int commonSubstring(String arr, String match) {//my method
// 调用String类中String substring(int beginIndex,int endIndex)获取子串然后再匹配
int total = 0;
for (int i = 0; i < arr.length() - 2; i++) {
String temp = arr.substring(i, i + match.length());
if (temp.compareTo(match) == 0) {// 创建临时String temp与match匹配
total++;
}
}
return total;
}
}