Return最长公共子串函数c++
Return the longest common Substring Function c ++
string longest_common_Substring(string a, string b) {
string best = "";
string subString = "";
//vector < vector<int>> s[a.length];
int max = a.length() + b.length();
for (int i = 0; i <= a.length(); i++)
{
for (int k = 0; k <= b.length() -i - 1; k++)
{
subString = a.substr(i, k);
if (b.find(subString)== true && subString.length() > best.length())
{
best = subString;
}
}
}
return best; }
我的示例输入是 longest_common_Substring("the rain",“在西班牙”),输出是 "in"。正确的输出是 "ain"
你应该改变你的if
条件。 string::find
returns 找到的字符串的位置或 string::npos
如果没有找到字符串。 string::find
不适用于 true
和 false
。 true
转换为 1
。因此 b.find(subString)== true
仅当 subString
在 b
的位置 1 处找到时才为真。您可以使用
验证此行为
#include <iostream>
#include <string>
int main() {
std::string a = "Text";
if (a.find("Text") == true) std::cout << 1 << std::endl;
if (a.find("ext") == true) std::cout << 2 << std::endl;
if (a.find("xt") == true) std::cout << 3 << std::endl;
if (a.find("t") == true) std::cout << 4 << std::endl;
return 0;
}
输出为2
尝试
b.find(subString) != b.npos
解决您的问题。
string longest_common_Substring(string a, string b) {
string best = "";
string subString = "";
//vector < vector<int>> s[a.length];
int max = a.length() + b.length();
for (int i = 0; i <= a.length(); i++)
{
for (int k = 0; k <= b.length() -i - 1; k++)
{
subString = a.substr(i, k);
if (b.find(subString)== true && subString.length() > best.length())
{
best = subString;
}
}
}
return best; }
我的示例输入是 longest_common_Substring("the rain",“在西班牙”),输出是 "in"。正确的输出是 "ain"
你应该改变你的if
条件。 string::find
returns 找到的字符串的位置或 string::npos
如果没有找到字符串。 string::find
不适用于 true
和 false
。 true
转换为 1
。因此 b.find(subString)== true
仅当 subString
在 b
的位置 1 处找到时才为真。您可以使用
#include <iostream>
#include <string>
int main() {
std::string a = "Text";
if (a.find("Text") == true) std::cout << 1 << std::endl;
if (a.find("ext") == true) std::cout << 2 << std::endl;
if (a.find("xt") == true) std::cout << 3 << std::endl;
if (a.find("t") == true) std::cout << 4 << std::endl;
return 0;
}
输出为2
尝试
b.find(subString) != b.npos
解决您的问题。