#include<bits/stdc++.h>
using namespace std;
#define int long long
void solve()
{
int n;
map<char,int>mp;
string s;
cin>>n;
int vis[30];
for(int i = 1 ; i <= n ; ++i)
{
cin>>s;
int len = s.size();
memset(vis,0,sizeof vis);
for(int j = 0 ; j < len ; ++j)
{
int now = s[j] - 'a';
if(vis[now] == 1)continue;
vis[now] = 1;
mp[s[j]]++;
}
}
for(auto [k,v] : mp)
if(v == n){
cout<<k<<endl;break;
}
}
signed main()
{
int t = 1;
// cin>>t;
while(t--)
solve();
return 0;
}
因为有很多字符串,如果要求每个串的公共子串的话,这个问题其实看起来是比较复杂的。
但是可以考虑最简单的情况:一个字符也是一个子串。
所以就问题转换成:哪一个字母在这些字符串中都出现过,如果有的话只要输出其中一个就可以了。

京公网安备 11010502036488号