题解 | #查找两个字符串a,b中的最长公共子串#

查找两个字符串a,b中的最长公共子串

https://www.nowcoder.com/practice/181a1a71c7574266ad07f9739f791506

#include <iostream>
using namespace std;

int main() {
    string a;
    string b;
    getline(cin, a);
    getline(cin, b);
    string tem;
    string res;
    if (a.size() > b.size()) {
        for (int i = 0, j = 0; j < b.size();) {
            tem = b.substr(i, len);
            if (a.find(tem) == a.npos) {
                i++;
                j = i + len;
            } else {
                res = tem;
                j++;
                len++;
            }
        }
    } else {
        for (int i = 0, j = 0; j < a.size();) {
            tem = a.substr(i, len);
            if (b.find(tem) == b.npos) {
                i++;
                j = i + len;
            } else {
                res = tem;
                j++;
                len++;
            }
        }
    }
cout << res;
}

从短的字符串中获取子字符串,然后去长的字符串中找该短的字符串,找到的话让子字符串长度+1再去找,没找到就长度不变,子字符开头向后移一位去找。

全部评论

相关推荐

hso_:哈哈哈哈哈哈我没offer一样在同一道题开喷了
投递深圳同为数码等公司10个岗位
点赞 评论 收藏
分享
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务