Acwing779 最长公共字符串后缀

Posted swiftac

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Acwing779 最长公共字符串后缀相关的知识,希望对你有一定的参考价值。

题目大意:给定n个字符串,让你找到他们的最长公共字符串后缀是什么,可能为空。

分析:题目数据范围比较小,可以O(n*n)暴力匹配,即可解决这道问题。之所以写这道题的题解还是因为写字符串的题还不够多啊,菜的一批。

代码:

#include<bits/stdc++.h>
using namespace std;
string common(string s,string t) {
    int most = 0;
    int len = min(s.length(), t.length());
    for (int i = 0; i < len; i++) {
        if (s[i] == t[i])
            most++;
        else
            break;
    }
    return s.substr(0, most);
}
int main() {
    int n;
    while (cin >> n) {
        if (!n) break;
        string s;
        cin >> s;
        reverse(s.begin(), s.end());
        n--;
        for (int i = 0; i < n; i++) {
            string t;
            cin >> t;
            reverse(t.begin(), t.end());
            s = common(s, t);
        }
        reverse(s.begin(), s.end());
        cout << s << endl;
    }
    return 0;
}

以上是关于Acwing779 最长公共字符串后缀的主要内容,如果未能解决你的问题,请参考以下文章

最长公共后缀-前缀

acwing 272. 最长公共上升子序列

897. 最长公共子序列

AcWing夏季每日一题--最长公共子序列

poj 2774 后缀数组 两个字符串的最长公共子串

如何使用树找到最长的公共子串?