問題:
私は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関数(テストケース)を書くことができましたが、この変更された関数を書くのに問題があります。