字符串a
,b
,c
若有最大公共子后缀,可以这样求:先求a
和b
的最大公共子后缀,然后再用这个后缀和c
求最大公共子后缀,即得到a
,b
,c
的最大公共子后缀。
C++ 代码
#include<iostream>
using namespace std;
string find_suffix(string a, string b)
{
string c;
if(a.size() > b.size()) swap(a, b);
int i = a.size() - 1, j = b.size() - 1;
int k = 0;
while(i >= 0)
{
if(a[i] == b[j]) k++;
else break;
i--;
j--;
}
return c = a.substr(a.size()-k);
}
int main()
{
int n;
while(cin >> n, n)
{
string a, b;
cin >> a; n--;
while( n-- )
{
cin >> b;
a = find_suffix(a, b);
}
cout << a << endl;
}
return 0;
}