最近我给了一个任务,用于查找另一个字符串中出现的字符串的数量,类似于ctrl + f的工作方式。下面是我的实现,但我正在检测代码中的错误。发现字符串的子字符串的发生?为什么我的程序不打印任何匹配?
#include<iostream>
using namespace std;
int findsubstr(string s, string substr);
int main(){
string a = "abcxyzcxy";
string b = "cxy";
cout << "number of matching found " << findsubstr(a, b) << endl;
return 0;
}
int findsubstr(string mainstring, string substr){
int i;
int count = 0;
if(substr.length() > mainstring.length()){
cout << "invalid string for matching!" << endl;
return 0;
}
for(i=0; i<mainstring.length(); i++){
int j;
for (j=0; j<substr.length(); j++){
if(mainstring[i+j] != substr[j]){
break;
}
}
if(j==substr.length()-1){
cout << "pattern found at " << i << endl;
count++;
}
}
return count;
}
我在网上找到的代码几乎是相同的,但我的程序似乎从来没有找到一个匹配,即使有一个。上面的例子有两个。我的逻辑是让我作为mainstring的索引和j作为子串的索引。那么如果来自子字符串的所有字符都匹配从主要字符串开始的字符,则在该索引处找到模式。
对于你的内循环放(j = 0; j
我刚刚打印出什么j当我在循环 –
没有解决问题? – DragonBallz