779. 最长公共字符串后缀
给出若干个字符串,输出这些字符串的最长公共后缀。
输入格式
由不超过 $5$ 组输入组成。
每组输入的第一行是一个整数 $N$。
$N$ 为 $0$ 时表示输入结束,否则后面会继续有 $N$ 行输入,每行是一个字符串(字符串内不含空白符)。
每个字符串的长度不超过 $200$。
输出格式
每组数据输出一行结果,为 $N$ 个字符串的最长公共后缀(可能为空)。
数据范围
$1≤N≤200$
输入样例:
3
baba
aba
cba
2
aa
cc
2
aa
a
0
输出样例:
ba
a
AC代码
循环判断多容易错。
#include <iostream>
using namespace std;
int main()
{
string str[1000];
int num;
while(cin >> num, num){
int size = 500;
for(int i =0;i<num;i++){
cin >> str[i];
if(size > (int)str[i].size())size = str[i].size();
}
int len = size;
while(len){
// len个能够匹配上
bool is_same = 1;
for(int i = 1;i<num;i++){ // 匹配num-1次
bool same = 1;
int k = 0;
while(k <= len){ // 边界问题。。。要多思考能否等于
if(str[0][str[0].size() - k] != str[i][str[i].size() - k])
{
same = 0;
break;
}
k ++;
}
if(!same){
is_same = 0;
break;
}
}
if(is_same) break;
else len --;
}
cout << str[0].substr(str[0].size()-len) << endl;
}
return 0;
}