就从最后开始比较,注意要用getline,而且要把第一个数字后面的回车读掉。
#include <bits/stdc++.h>
using namespace std;
int main(){
string s;
int len;
scanf("%d\n",&len);
vector<string> vec(len);
int minsize=9999999;
for(int i=0;i<len;i++){
getline(cin,vec[i]);
minsize=min((int)vec[i].size(),minsize);
}
int idx=0;
for(;idx<minsize;idx++){
bool flag=true;
char c=*(vec[0].end()-idx-1);
for(int i=1;i<len;i++){
if(c!=*(vec[i].end()-idx-1)){
flag=false;
break;
}
}
if(!flag)break;
}
if(idx==0)printf("nai");
else{
s=vec[0].substr(vec[0].size()-idx);
while(s[0]==' ')s.erase(0,1);
printf("%s",s.c_str());
}
}
本文介绍了一种使用C++实现的字符串比较算法,通过从字符串的末尾开始逐字符对比,找出一组字符串中的最长公共后缀。该算法利用了getline函数读取输入,并在比较前确保移除了首个数字后的换行符,适用于处理多个字符串的情况。
3124

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



