相关题目:
解题思路:
取出s1和s2的最长公共后缀a,然后再将a和s3进行处理,取出s3和a的最长公共后缀,以此类推。
相关代码:
#include<iostream>
#include<string>
#include<algorithm>
//首先定义s1和s2可以取出最长公共前缀的方法。
string fun(string s1,string s2){
int i=0;
int j=0;
while(i<s1.length()&&j<s2.length()&&s1[i]==s2[j]){
i++;
j++;
}
return s1.substr(0,i); //返回最长公共前缀。
}
int main(){
int N;
string s1,s2;
while(cin>>N,N!=0){
cin>>s1;
reverse(s1.begin(),s1.end());
for(int i=1;i<N;i++){
cin>>s2;
reverse(s2.begin(),s2.end());
s1=fun(s1,s2);
}
reverse(s1.begin(),s1.endl());
cout<<s1<<endl;
}
return 0;
}
补充:
1 reverse(s.begin(),s.end()); //s.begin()表示的是s的首地址,s.end()表示的是s的末尾元素的地址。该方法存于#include<algorithm>中。
2 s.substr(0,i); //从s中截取一段子串,从下标0开始,长度为i。该方法存于#include<string>中。