我想比较两个字符串,并计算在字符串 A 中可以找到多少个子字符串 B。
但它总是显示'0'。怎么了?
int getMatchCount(string a, string b)
{
int num;
num = 0;
for (int i = 0; i < a.length() - b.length() + 1; ++i)
{
if (a.compare(i, b.length() + i, b, 0, b.length()) == 0) // comapre function
{
num = num + 1;
}
else
{
continue;
}
}
}
int main()
{
int x = getMatchCount("sisisisisisisisis", "si");
cout << x << endl;
}
最佳答案
-
b.length() + i
错了,要比较的长度是b.length()
. - 你不需要
continue
. - 您需要返回值。
-
i < a.length() - b.length();
对于 a = "sisisisi", b = "si", 将计数 3,但是i <= a.length() - b.length();
将计数 4。
int getMatchCount(string a, string b)
{
int num;
num = 0;
for (int i = 0; i <= a.length() - b.length(); i++) {
if (a.compare(i, b.length(), b, 0, b.length()) == 0) {
num = num + 1;
}
}
return num;
}
int main()
{
int x = getMatchCount("sisisisisisisisis", "si");
cout << x << endl;
return 0;
}
关于c++ - 关于c++中的 'compare'函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48800834/