题目
其实就是求公共后缀,可以转化为求公共前缀,这样方便很多.
思路
首先翻转字符串转化为求公共前缀的问题,这样方便很多,然后不断的比较截取公共的部分.
代码
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int n;
scanf("%d\n",&n);
string ans;
for(int i=0; i<n; i++) {
string s;
getline(cin,s);
int len;
reverse(s.begin(),s.end());
len = s.size();
if(i==0) {
ans = s;
continue;
} else {
int anslen = ans.size();
int minLen = min(anslen,len);
for(int j=0; j<minLen; j++) {
if(ans[j]!=s[j]) {
ans = ans.substr(0,j);
break;
}
}
}
}
reverse(ans.begin(),ans.end());
if(ans.size()==0)
ans = "nai";
cout<<ans;
return 0;
}
??正文结束??
本文介绍了一种求公共后缀的算法,通过将问题转化为求公共前缀,利用字符串翻转技巧,不断比较并截取公共部分。该算法使用C++实现,详细展示了从输入到输出的完整流程。
186

被折叠的 条评论
为什么被折叠?



