解法一:
最坏情况的计算量:$200 \ast200 \ast 200=8 \ast 10^6$,∴不会超时
1.将输入的字符串反转
2.开始枚举n组字符串,直到字符不同为止
3.再次反转结果字符串,并输出
#include<iostream>
#include<string>
using namespace std;
string word[201];
int main()
{
int t;
cin>>t;
while(t)
{
int min_idx=201;
for(int i=0;i<t;i++)
{
string temp;
cin>>temp;
min_idx=temp.size()<min_idx?temp.size():min_idx;
for(int j=temp.size()-1;j>=0;j--) word[i]+=temp[j];
}
string res;
for(int i=0;i<min_idx;i++)
{
char d=word[0][i];
bool is_ok=false;
for(int j=0;j<t;j++){
if(word[j][i]==d) is_ok=true;
else is_ok=false;
}
if(is_ok) res= d +res;
else
{
cout<<res<<endl;
res="";
break;
}
}
if(res!="") cout<<res<<endl;
for(int i=0;i<t;i++) word[i]="";
cin>>t;
}
return 0;
}