序号:4454
老师的任务
Time Limit:s Memory Limit:128MB
题目描述
寒假要到了,老师交给一个任务:有n个字符串,现在让你按照先后顺序把它们拼接起来。拼接意思是把两个字符串首尾最长的相同的部分连接在一起。
如上图所示:我们要将题目里的两个字符串合并,那么红色部分就是这两个字符串首尾最长的相同的部分
输入描述
第一行包含一个整数n,代表字符串个数
接下来n行每行一个字符串
n小于等于100每个字符串长度小于等于100
输出描述
一行一个字符串代表最终答案
样例1
输入
3
baccano
canot
tt
输出
baccanott
样例2
输入
3
a
b
c
输出
abc
#include <bits/stdc++.h>
#define ll long long
#define fot for
using namespace std;
ll n,i;
string a[110],ans;
int main(){
ios::sync_with_stdio(false);
cin>>n;
for(i=1;i<=n;i++){
cin>>a[i];
}
ans=a[1];
for(i=2;i<=n;i++){
ll s=ans.size(),b=a[i].size();
ll k=0;
ll l=min(s,b);
fot(ll j=l;j>0;j--){
if(a[i].substr(0,j)==ans.substr(s-j,j)){
k=j;
break;
}
}
for(ll j=k;j<b;j++){
ans+=a[i][j];
}
}
cout<<ans;
return 0;
}