原文:我的个人博客
原题链接
考点
字符串的处理
思路
将字符串逆序,求最长的公共子串即可。用ans记录当前的最长字串,每来一个新的字符串更新ans。
代码
#include <bits/stdc++.h>
using namespace std;
int main(){
//找最长后缀
int n;
cin>>n;
getchar();//把换行
string s,ans;
getline(cin,ans);
reverse(ans.begin(),ans.end());//初始化结果为第一个字串
for(int i=1;i<n;i++){
getline(cin,s);
reverse(s.begin(),s.end());
int j;
for(j=0;s[j]&&ans[j]&&s[j]==ans[j];j++);
ans=ans.substr(0,j-0);
}
if(ans=="")cout<<"nai";
else{
reverse(ans.begin(),ans.end());
cout<<ans;
}
return 0;
}