Description:
题目大意:给出 n 个字符串,求它们公共后缀字串。
解题思路:
算法标签:字符串
先将每个字串翻转一下,因为操作方便,然后寻找公共部分,利用 substr()截取公共后缀。
代码:
// TSWorld
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <cstdio>
#include <cstring>
#include <vector>
#include <algorithm>
#include <map>
#include <stack>
#include <cmath>
#include <queue>
using namespace std;
#define LL long long
const int N = 200005;
int main()
{
int n = 0;
string s,ans;
cin>>n;
getchar();
for(int i = 1;i <= n;i++) {
getline(cin,s);
reverse(s.begin(),s.end());
// 第一个串初始化
if(i == 1)
ans = s;
else {
// 如果公共后缀比 s 都长,显然错误
if(ans.length() > s.length()) {
swap(ans,s);
}
int minlen = min(int(ans.length()),int(s.length()));
for(int j = 0;j < minlen;j++)
{
if(ans[j] != s[j]) {
ans = ans.substr(0,j);
break;
}
}
}
}
reverse(ans.begin(),ans.end());
if(ans.length() == 0)
ans = "nai";
cout<<ans;
return 0;
}