题目大意:有一些字符串,问存不存在一个字符串使得其他所有字符都是这个串的子串
题目思路:首先我们知道这个串一定是最长得串,有相同最长长度的串判一下,然后会可以AC自动机直接扔,也可以用string的find函数找,卡的不是很严
#include <map>
#include <set>
#include <cmath>
#include <queue>
#include <stack>
#include <vector>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>
using namespace std;
typedef long long ll;
const int maxn = 2e5+10;
int T,n,len,maxlen;
string str[maxn],mo;
int main(){
ios::sync_with_stdio(false);
cin>>T;
while(T--){
cin>>n;
maxlen = -1;len;
bool flag = false;
for(int i = 1;i <= n;i++){
cin>>str[i];
len = str[i].size();
if(maxlen < len) mo = str[i],maxlen = len;
}
for(int i = 1;i <= n;i++){
len = str[i].size();
if(maxlen == len&&mo != str[i]) {flag = true;break;}
}
int i;
for(i = 1;i <= n;i++){
if(mo.find(str[i]) == -1) {flag = true;break;}
}
if(!flag) cout<<mo<<endl;
else cout<<"No"<<endl;
}
return 0;
}