題目描述在字符串 a="abkkcdekafghkkijkkmn" 中找出子串 “kk” 出現的次數。
在String類中 判斷字符串是否包含某一子串,用contains(); 來判斷 返回值類型爲 Boolean;
在String類中 indeof();方法既可以判斷字符串是否包含某一子串,還可以返回該子串第一次出現的索引;
所以用indexof()來寫
詳細代碼:
class StringTest
{
/*
方法一
*/
public static int getSubCount(String str,String key){
int count = 0;
int index = 0;
while((index=str.indexOf(key))!=-1){
System.out.println("str="+str);
str = str.substring(index+key.length());
count++;
}
return count;
}
/*
方式二。
*/
public static int getSubCount_2(String str,String key){
int count = 0;
int index = 0;
while((index= str.indexOf(key,index))!=-1){
System.out.println("index="+index);
index = index + key.length();
count++;
}
return count;
}
public static void main(String[] args) {
String str = "kkabkkcdkkefkks";
System.out.println("count="+getSubCount_2(str,"kk"));
}
}
方法一:利用index=str.indexOf(key) 得到第一次出現子串的索引,再通過str=str.substring(index+key.length();
獲取截取後的字符串,通過循環,當不存在子串時index=-1退出循環。
方法二:
在方法中時在原字符串中進行查找,index= str.indexOf(key,index)找到第一次出現子串的索引,
index = index + key.length() 計算出在下次查找時應從index的索引位置查找。
通過循環即可全部找出。相對於第一種方法,該方法是在本字符串中進行操作,不生成多餘字符串。