c++ - 返回最长公共子串函数 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 spain"),输出是"in"。正确的输出是“ain”
解决方案
你应该改变你的if
状况。string::find
返回找到的字符串的位置,或者string::npos
如果没有找到字符串。string::find
不适用于true
and false
。true
被转换为1
。因此,仅当在 中的位置 1 处找到b.find(subString)== true
时才为真。您可以使用以下方法验证此行为subString
b
#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
解决您的问题。
推荐阅读
- python - Selenium 如何选择正文中的最后一个链接?
- python - 如何在不使用 Python 绘图的情况下检测季节性
- php - 帮助理解和解决我的 WordPress index.php 中的恶意代码
- nest-device-access - 无法链接到合作伙伴连接
- c# - 如何转换 C# 列表
到 NSData? - javascript - 在 Angular .ts 文件中使用地图
- c++ - 哪些处理器支持 __builtin_clz?
- paypal - 贝宝支付标准授权和捕获
- sql - 为什么我无法将变量传递到我的 ORACLE SQL 语句中?
- c - gcov 不生成 gcda 文件