解题思路:
暴力就行,从末尾开始比较。
代码如下:
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn = 100 + 5;
const int maxl = 300 + 5;
char str[maxn][maxl];
int len[maxn];
char ans[maxl];
int main()
{
int n;
while(scanf("%d", &n) == 1)
{
gets(str[0]);
for(int i = 0; i < n; i++)
{
fgets(str[i], maxl, stdin);
len[i] = strlen(str[i]);
}
int cnt = 0;
for(int i = 2; ; i++) // i = 2 吃掉回车
{
char c = str[0][len[0]-i];
int flag = 1;
for(int j = 1; j < n; j++)
if(str[j][len[j]-i] != c) {flag = 0; break;}
else if(len[j] < i) {flag = 0; break;} //有字符串已经比完了
if(flag) ans[cnt++] = c;
else break;
}
ans[cnt] = '\0';
reverse(ans, ans+cnt);
if(cnt) printf("%s\n", ans);
else printf("nai\n");
}
return 0;
}