题目描述
找所有字符串的共同后缀
知识点
STL字符串string
的使用
我的实现
码前思考
就一直比对就好
代码实现
#include <iostream>
#include <string>
using namespace std;
const int maxn = 1e2+10;
string ins[maxn];
int n;
int main(){
scanf("%d\n",&n);
int len;
for(len=0;len<n;len++){
getline(cin,ins[len]);
}
string res = ins[0];
for(int i=1;i<len;i++){
//cout<<ins[i]<<endl;
int s1 = res.size();
int s2 = ins[i].size();
//从后往前比较
int j;
for(j=0;j<s1&&j<s2;j++){
if(res[s1-1-j] != ins[i][s2-1-j]){
break;//此时的j不可以!
}
}
if(j==0){
cout<<"nai";
return 0;
}else{
res = res.substr(s1-j);
}
}
cout<<res;
return 0;
}
码后反思
- 我一刷的时候没有做出来哦,一刷用的
char
数组,贼麻烦,二刷的时候已经会用STL
了,所以就写出来了; - 注意读取一行
string
,使用getline(cin,str)
,而且要注意先吸收前面的\n
,否则会读入空串的。 - 柳神使用的是先反转字符串的思路,这是可以的!会好想一些。