题目大意:给定n个字符串(可能带空格),求出相同后缀,若没有,输出nai。
解题思路:将n个字符串反转,然后转换成求相同前缀,记住当前相同字符的索引,然后倒序输出即可。
注意事项:要注意所有字符都相同的情况,此时如果是如下的方法,就会出错。因为这样无法判断全部相同的情况
for(int i=0; i<len; ++i){
for(int j=1; j<n; ++j){
if(data[0][i] != data[j][i]){
index = i;
flag = 1;
break;
}
}
if(flag == 1){
break;
}
}
AC代码:
#include <iostream>
#include <algorithm>
using namespace std;
int main(){
int n;
string data[105];
int len=300, index=0;
cin>>n;
getchar();
for(int i=0; i<n; ++i){
getline(cin, data[i]);
if(data[i].length() < len){
len = data[i].length();
}
reverse(data[i].begin(), data[i].end());
}
int j;
for(int i=0; i<len; ++i){
for(j=1; j<n; ++j){
if(data[j][i] != data[j-1][i]){
break;
}
}
if(j==n){
index++;
}else{
break;
}
}
if(index == 0){
cout<<"nai";
}else{
for(int i=index-1; i>=0; --i){
cout<<data[0][i];
}
}
cout<<endl;
return 0;
}