错误点
《算法笔记》中给出的思路是对的,但是实现是错的!
具体原因与反转有关,也和PTA不知道是什么奇怪的检测用例有关。
尝试多次修改无果,暂时放这了。
/* A1077 == 字符数组倒序查找相同后缀/先反转,然后正序查找相同前缀 */
//有问题,反转本身就很有问题,会有回车
#include <cstdio>
#include <cstring>
//int minLen = 256;
void rever(char n[])
{
int len = strlen(n) - 1;
for (int i = 0; i < len / 2; i++) {
char temp = n[i];
n[i] = n[len - 1 - i];
n[len - 1 - i] = temp;
}
}
int main()
{
int N;
char lan[100][256];
scanf("%d", &N);
getchar();
for (int i = 0; i < N; i++) {
//scanf("%s", &lan[i]);
fgets(lan[i], sizeof(lan[i]), stdin);
//getchar();
//int len = strlen(lan[i]);
//if (minLen > len) minLen = len;
rever(lan[i]);
}
int index = 0;
int len = strlen(lan[0]);
for (int i = 0; i < len; i++) {
//if (lan[0][i] == '\n') continue;
char c = lan[0][i];
bool same = true;
for (int j = 1; j < N; j++) {
if (c != lan[j][i]) {
same = false;
break;
}
}
if (same) index++;
else break;
}
/*
for (int i = 0; i < N; i++) {
puts(lan[i]);
}
*/
if (index) {
for (int i = index - 1; i >= 0; i--) {
printf("%c", lan[0][i]);
}
} else {
printf("nai");
}
return 0;
}