Here you have a set of strings. A dominator is a string of the set dominating all strings else. The string $S$ is dominated by $T$ if $S$ is a substring of $T$.
For each test case, the first line contains an integer $N$ indicating the size of the set.
Each of the following $N$ lines describes a string of the set in lowercase.
The total length of strings in each case has the limit of $100000$.
The limit is 30MB for the input file.
3 10 you better worse richer poorer sickness health death faithfulness youbemyweddedwifebetterworsericherpoorersicknesshealthtilldeathdouspartandpledgeyoumyfaithfulness 5 abc cde abcde abcde bcde 3 aaaaa aaaab aaaac
youbemyweddedwifebetterworsericherpoorersicknesshealthtilldeathdouspartandpledgeyoumyfaithfulness abcdeNo
代码如下:
#include<iostream> #include<string> #include<vector> using namespace std; int main() { ios::sync_with_stdio(false); //存在大量输入输出时需关闭IO同步或使用scanf与printf int n,t,flag; string str,ans; cin>>t; while(t--) { vector<string>vec; //定义一个string容器 vector<string>::iterator it; cin>>n; flag=1; ans.clear(); //多组数据,使用前需清空 for(int i=1;i<=n;i++) { cin>>str; vec.push_back(str); if(ans.length()<str.length()) //每次比较长度,找到最大子串 ans=str; } for(it=vec.begin();it!=vec.end();it++) { if(ans.find(*it)==ans.npos) //判断当前字符串是否为最大串的子串 { flag=0; break; } } if(flag) cout<<ans<<endl; else cout<<"No"<<endl; } return 0; }