茉茉的密码

描述

  藏宝秘窟的大门上有一把密码锁,只有输入正确的密码才能打开。大门旁刻有 n 个仅由小写字母组成的字符串。茉茉的研究表明,只要是这
n 个字符串的公共非空子串,就能作为密码开启大门。请你帮助茉茉给出任意一个满足条件的密码。我们可以证明,一定存在满足题意的答案。

  【名词解释】公共子串:n 个字符串的一个公共子串,是指在这 n 个字符串中均出现过的一段连续字符。

输入描述:

  在一行上输入一个整数 n(1≦n≦10^5),代表字符串的数量。
  此后 n 行,每行输入一个仅由小写字母组成的字符串 s_i。保证\sum^n_{i=1}|s_i|≦10^5

输出描述:

  输出一行一个字符串,表示任意一个满足要求的公共子串。
  如果存在多个可行答案,你可以输出其中任意一个,系统将自动判定答案正确性。

解题思路

  因为题目保证至少存在一个公共非空子串,那么该子串的第一个字符一定是一个公共字符。因此,我们只需找到任意一个在所有字符串中都出现过的字符,输出它即可。

c++实现

#include <iostream>
#include <vector>

using namespace std;

int main() {
    std::vector<bool> is_common(26, true);
    std::string s;
    int n, i, j;

    std::cin >> n;

    for (i=0; i<n; i++)
    {
        std::vector<bool> has_char(26, false);
        std::cin >> s;

        for (char c : s)
        {
            has_char[c-'a'] = true;
        }

        for (j=0; j<26; j++)
        {
            if (!has_char[j])
            {
                is_common[j] = false;
            }
        }
    }

    for (i=0; i<26; i++)
    {
        if (is_common[i] == true)
        {
            char c = i + 'a';

            std::cout << c << std::endl;

            return 0;
        }
    }

    return 0;
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容