PAT A1077Kuchiguse的第4,5测试点未过
我的解答思路和尝试过的方法
我的思路是将第一个字符串做为暂时的最长公共后缀suffix;每次读入下一行字符串时,找到暂时最长公共后缀suffix和该字符串的最长公共后缀,作为新的suffix;最后依据suffix的长度决定输出“nai”或直接输出suffix。
代码如下
#include <iostream>
using namespace std;
// 寻找两个字符串的公共最长后缀
string Suffix(string A, string B){
string C = "";
int i = 1, lenA = A.size(), lenB = B.size();
while(1){
char a = A[lenA - i], b = B[lenB - i];
if(a == b){
C = a + C;
i++;
}
if (a != b)
return C;
if (lenA - i == 0)
return A;
if (lenB - i == 0)
return B;
}
}
int main(){
int N;
cin >> N;
cin.ignore();
string suffix;
getline(cin, suffix); // 初始公共最长后缀为第一个字符串
for(int i = 1; i < N; i++){ // 边读入边取公共最长后缀
string temp;
getline(cin, temp);
suffix = Suffix(suffix, temp);
}
if(suffix.size() == 0) cout<<"nai";
else cout<<suffix;
}