我想查找給定字符串中的子字符串的數量。目前,我的代碼不考慮重疊的字符串。查找字符串中的子字符串發生
例如
SUBSTR = 「CDE」 海峽= 「cdcde」
我的代碼:
public static int ssCount(String str, String substr) {
int count = 0;
int strlen = str.length();
int substrlen = substr.length();
int numsubstr = 0;
int substrpointer = 0;
for (int i = 0; i < strlen; i++) {
if (str.charAt(i) == substr.charAt(substrpointer)) {
substrpointer++;
count++;
}
else {
count = 0;
substrpointer = 0;
}
if (count == substrlen) {
numsubstr++;
count = 0;
}
}
return numsubstr;
}
我嘗試:
public static int ssCount(String str, String substr) {
int count = 0;
int strlen = str.length();
int substrlen = substr.length();
int numsubstr = 0;
int substrpointer = 0;
int firstchar = 0;
for (int i = 0; i < strlen; i++) {
if (str.charAt(i) == substr.charAt(substrpointer)) {
substrpointer++;
count++;
if (str.charAt(i) == substr.charAt(0)) {
firstchar = i;
}
}
else {
count = 0;
substrpointer = 0;
i = firstchar;
}
if (count == substrlen) {
numsubstr++;
count = 0;
}
}
return numsubstr;
}
我嘗試添加第二個指針將指向子字符串的第一個字符的下一個出現位置爲了繼續從那個點進行比較。但是我遇到了麻煩,因爲我可能遇到一些無限循環。
爲什麼不使用正則表達式和'Matcher'? –
[字符串中子字符串出現的可能的重複](http://stackoverflow.com/questions/767759/occurrences-of-substring-in-a-string) –
你甚至沒有任何問題。不是一個真正的問題,所以投票結束。 –