AcWing 779. 最长公共字符串后缀
原题链接
困难
作者:
ls131
,
2021-04-03 20:50:16
,
所有人可见
,
阅读 315
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int N=200;
string str[N];
int main(){
int n;
while(cin>>n,n){
int len=1000;
for(int i=0;i<n;i++){
cin>>str[i];
if(len>str[i].size()) len=str[i].size();//找输入的最小字符串的长度
}
while(len){
bool success=true;
for(int i=1;i<n;i++) //枚举挨个字符串
{
bool is_same=true;
for(int j=1;j<=len;j++) //枚举字符串长度
{
if(str[0][str[0].size()-j]!=str[i][str[i].size()-j]) //从后向前进行比对 不匹配退出
{
is_same= false;
break; //每个字符串都和第一个模板串进行比对从结尾向前开始比对(后缀suffix) 如果出现不同设置flag标志判断符号
}
}
if(!is_same) //如果第i个字符串不匹配就退出
{
success=false;
break;
}
}
if(success) break; //如果成功说明所有字符串后缀都匹配 不然枚举更小长度的后缀
len--;
}
cout<<str[0].substr(str[0].size()-len)<<endl;
}
return 0;
}