原来我以为是找N个字符串的最大公共字串,有点懵逼,后来看答案才发现,是公共字串是在最后出现的。
然后我也看了答案,就把答案贴上来吧。。。
有个陷阱,就是读取字符串的最后可能会有空格。
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<vector>
#include<queue>
#include<string.h>
#include<stack>
#include<string>
using namespace std;
void findsuffix(string &s1,string &s2){
reverse(s2.begin(),s2.end());
int s1_b=0,s2_b=0;
while(s1[s1_b]==' ') s1_b++;
while(s2[s2_b]==' ') s2_b++;
int s1_e=s1_b,s2_e=s2_b;//e是第一个非零字符的位置
while(s1_e<s1.length()&&s2_e<s2.length()){
if(s1[s1_e]!=s2[s2_e]) break;
s1_e++;
s2_e++;
}
//s1_e就已经不相等了
s1=s1.substr(s1_b,s1_e-s1_b);
}
int main(){
int n;
string s1,s2;
cin>>n;
getchar();
getline(cin,s1);
reverse(s1.begin(),s1.end());
for(int i=1;i<n;i++){
getline(cin,s2);
findsuffix(s1,s2);
}
if(s1.size()==0){
cout<<"nai"<<endl;
}
else{
reverse(s1.begin(),s1.end());
cout<<s1<<endl;
}
return 0;
}