我正在嘗試使用一個k值在兩個字串中找到多個字母的 LCS 。例如,如果
k = 3
s1 = "AAABBBCCCDDDEEE"
s2 = "AAACCCBBBDDDEEE"
那么 LCS 將是4:"AAABBBDDDEEE"或者"AAACCCDDDEEE",另一個例子是如果
k = 2
s1 = "EEDDFFAABBCC"
s2 = "AACCDDEEBBFF"
那么 LCS 將是2: "EEBB", "EEFF", "DDFF", "DDBB", ... 等等。我怎樣才能做到這一點,以便表格的每個單元格中有多個字符,如果字符不相等,我將不得不使用一種排序,即"EF" == "FE"
uj5u.com熱心網友回復:
使用std::is_permutation發現,如果兩個字串包含相同字符。要在每個“表格單元格”中存盤多個字符,請使用std::string.
有關 C 的任何問題,請轉到此處。
編輯:這是 substr 用法的演示:
std::string s{"AAABBBCCCDDD"};
std::cout << s.substr(3, 3) << std::endl; // BBB
std::vector<std::string> substr_table;
substr_table.reserve(4); // reserve space for elements
for(std::size_t i{}; i < s.size(); i = 3){ // break up s into four substrings
substr_table.push_back(s.substr(i, 3));
}
std::cout << "[ ";
std::copy(
substr_table.cbegin(),
substr_table.cend(),
std::ostream_iterator<std::string>(std::cout, ", ")
); // Print vector
std::cout << "]\n";
// OUTPUT: [ AAA, BBB, CCC, DDD,]
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/362206.html
