问题:
我有 3 个字符串 s1、s2、s3。每个都在两边包含垃圾文本,在其中心有一个定义模式:text1+number1
. number1
每个字符串增加 2。我想提取text1+number1
.
我已经写了代码来查找number1
如何扩展 LCS 函数以获取 text1?
#include <iostream>
const std::string longestCommonSubstring(int, std::string const& s1, std::string const& s2, std::string const& s3);
int main(void) {
std::string s1="hello 5", s2="bolo 7", s3="lo 9sdf";
std::cout << "Trying to get \"lo 5\", actual result: \"" << longestCommonSubstring(5, s1, s2, s3) << '\"';
}
const std::string longestCommonSubstring(int must_include, std::string const& s1, std::string const& s2, std::string const& s3) {
std::string longest;
for(size_t start=0, length=1; start + length <= s1.size();) {
std::string tmp = s1.substr(start, length);
if (std::string::npos != s2.find(tmp) && std::string::npos != s3.find(tmp)) {
tmp.swap(longest);
++length;
} else ++start;
}
return longest;
}
例子:
从"hello 5"
, "bolo 7"
,"lo 9sdf"
我想得到 "lo 5"
代码:
我已经能够编写一个简单的 LCS 函数(测试用例),但是我在编写这个修改后的函数时遇到了麻烦。