A1077. Kuchiguse (20)
相同后缀问题转化位相同前缀问题,便于处理
#include <stdio.h>
#include <string.h>
// 反转字符串
void reverse(char* str){
int len = (int)strlen(str);
char temp;
for(int i = 0; i < len / 2; i++){
temp = str[len - i - 1];
str[len - 1 - i] = str[i];
str[i] = temp;
}
}
int main(int argc, const char * argv[]) {
int N, minLen = 256;
char str[100][256];
scanf("%d", &N);
getchar(); // 接收换行符
for(int i = 0; i < N; i++){
gets(str[i]);
minLen = ((int)strlen(str[i]) < minLen) ? (int)strlen(str[i]) : minLen;
reverse(str[i]);
}
int counter = 0;
for(int i = 0; i < minLen; i++){
char c = str[0][i];
int isEqual = 1;
// 遍历每个字符串的第i位是否相同
for(int j = 1; j < N; j++){
if(str[j][i] != c){
isEqual = 0;
break;
}
}
// 如果第i位相同,则counter加一
if(isEqual)
counter++;
else
break;
}
// 从0到(counter-1)之间的字符串即位相同前缀
if(counter){
for(int i = counter - 1; i >= 0; i--)
printf("%c", str[0][i]);
} else {
printf("nai");
}
return 0;
}