解题代码
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int num, len, min = 257, i, j;
scanf("%d\n", &num);
char word[100][257], ret[257];
for (int i = 0; i < num; i++) {
cin.getline(word[i], 257);
len = strlen(word[i]);
if (min > len) min = len;
reverse(word[i], word[i] + len);
}
for (i = 0; i < min; i++) {
for (j = 0; j < num - 1; j++)
if (word[j][i] != word[j + 1][i]) break;
if (j == num - 1) ret[i] = word[0][i];
else break;
}
int len2 = strlen(ret);
if (len2) {
ret[i] = '\0';
reverse(ret, ret + i);
printf("%s", ret);
}
else printf("nai");
return 0;
}
测试结果
问题整理
1.字符串处理。
2.用输出字符的个数来判断是否输出,然后再输出,往往会有更好的安全性。