总的来说,这道题也没什么新鲜的,就是从后向前判断是否有相同的结尾;
但是值得注意的是输入的问题,这里用cin的话,如果后面在输入新的字符串, getline会将空格或者回车读入,所以一定要注意,在cin单个字符后,一定要getchar()来代表换行。
剩下的也就没什么,主要的就是从后往前比较,如果发现不同字符,截取。迭代的时候一定要注意选取最小的字符个数进行迭代,从而使得不会出现非法的地址访问
#include<string>
#include<iostream>
using namespace std;
int main() {
int n;
cin >> n;
getchar();
string res;
getline(cin, res);
string temp;
for (int i = 1; i < n; i++) {
getline(cin, temp);
int same = 0;
for (same = 0; same<res.size()&&same<temp.size(); same++) {
if (res[res.size() - 1 - same] != temp[temp.size() - 1 - same]) {
break;
}
}
if (same == 0) {
res = "nai";
break;
}
res = res.substr(res.size()-same);
//cout << res << endl;
}
cout << res;
cin >> temp;
}