输入两个字符串str1
和str2
,输出二者的最大相同子串str
string findMaxSameStr(string str1, string str2)
{
string a = str1.size() > str2.size() ? str1 : str2;
string b = str1.size() > str2.size() ? str2 : str1;
int len = 0, pos = 0;
for (size_t i = 0; i < b.size(); ++i) {
for (size_t j = 0; j < a.size(); ++j) {
if (a[j] == b[i]) {
int templen = 1;
int pos1 = i;
int pos2 = j;
while (pos1 + 1 < b.size() && pos2 + 1 < a.size() && b[++pos1] == a[++pos2]) {
++templen;
}
if (templen > len) {
len = templen;
pos = i;
}
}
}
}
return b.substr(pos, len);
}
在刷题的时候经常遇到这种问题,其实就我浅薄的经验来看,在工作中好像还没有经常遇到过此类问题(笑)。