一题基础的字符串处理
看题目戳这
最容易出错的应该是从后面开始找共同后缀时 一旦出现不同立即break
此外推荐一下reverse这个algorithm里的东西
很好用
如果是stl里的容器(比如string,vector)
那么就用迭代器
string s="abcd";
reverse(s.begin(),s.end());
当然部分容器也可以使用下面的方法
如果是普通的数组
int d[]={1,2,3,4,5,6},lenth=6;
reverse(d,d+lenth);
代码如下
#include<bits/stdc++.h>
using namespace std;
string cmp(string x,string y){
string ans;
int len;
reverse(x.begin(),x.end());
reverse(y.begin(),y.end());
len=min(x.size(),y.size());
for(int i=0;i<len;i++){
if(x[i]==y[i]){
ans+=x[i];
}else {
break;//重要的一步
}
}
reverse(ans.begin(),ans.end());
return ans;
}
int main(){
int n;
string str,ans;
cin>>n;
getchar();
for(int i=0;i<n;i++){
getline(cin,str);
if(i==0){
ans=str;
}else {
ans=cmp(ans,str);
}
}
if(ans.size()!=0){
cout<<ans;
}else {
cout<<"nai";
}
return 0;
}