题解 | 茉茉的密码

茉茉的密码

https://www.nowcoder.com/practice/016a87b3015c448da67974d1d731d7ef

#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;
}

因为有很多字符串,如果要求每个串的公共子串的话,这个问题其实看起来是比较复杂的。

但是可以考虑最简单的情况:一个字符也是一个子串。

所以就问题转换成:哪一个字母在这些字符串中都出现过,如果有的话只要输出其中一个就可以了。

全部评论

相关推荐

02-25 16:55
已编辑
北京工业大学 Java
211本,找日常实习的话,如果面向中厂的话,需要刷hot100么?因为之前从来没刷过,算法仅限于学校课程水平,准备3月投递简历,现在还需要背八股文,时间有些紧张,还需要刷算法题么?同时什么样的公司可以算是中厂呢?
程序员小白条:中大厂说的上名字的,必定要算法,hot100只是最基础的了,题库远不止100题捏,一般在300-400题量之间,算法=学校课程=简单题也做不出,多准备八股文和算法吧,其他项目可以放放,精刷算法就行了,花时间成长很快的
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务