I'm trying to find the LCS of more than one letter in two strings using a k value. For example, if
k = 3
s1 = "AAABBBCCCDDDEEE"
s2 = "AAACCCBBBDDDEEE"
then the LCS would be 4: "AAABBBDDDEEE" or "AAACCCDDDEEE", another example is if
k = 2
s1 = "EEDDFFAABBCC"
s2 = "AACCDDEEBBFF"
then the LCS would be 2: "EEBB", "EEFF", "DDFF", "DDBB", ... and so on. How would I be able to do it so that more than one character is in each cell of the table and if the characters are not equal I would have to use a sort, i.e. "EF" == "FE"
CodePudding user response:
Use std::is_permutation to find if two strings contain the same characters. To store more than one character in each "cell of the table" use std::string.
For any questions on c , go here.
EDIT: Here is a demo of substr's usage:
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,]
