C++求两个字符串最大字串

输入两个字符串str1str2,输出二者的最大相同子串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);
}

在刷题的时候经常遇到这种问题,其实就我浅薄的经验来看,在工作中好像还没有经常遇到过此类问题(笑)。

你可能感兴趣的:(C++求两个字符串最大字串)