茉茉的密碼

描述

??藏寶秘窟的大門上有一把密碼鎖,只有輸入正確的密碼才能打開。大門旁刻有 n 個(gè)僅由小寫字母組成的字符串。茉茉的研究表明,只要是這
n 個(gè)字符串的公共非空子串,就能作為密碼開啟大門。請你幫助茉茉給出任意一個(gè)滿足條件的密碼。我們可以證明,一定存在滿足題意的答案。

??【名詞解釋】公共子串:n 個(gè)字符串的一個(gè)公共子串,是指在這 n 個(gè)字符串中均出現(xiàn)過的一段連續(xù)字符。

輸入描述:

??在一行上輸入一個(gè)整數(shù) n(1≦n≦10^5),代表字符串的數(shù)量。
??此后 n 行,每行輸入一個(gè)僅由小寫字母組成的字符串 s_i。保證\sum^n_{i=1}|s_i|≦10^5

輸出描述:

??輸出一行一個(gè)字符串,表示任意一個(gè)滿足要求的公共子串。
??如果存在多個(gè)可行答案,你可以輸出其中任意一個(gè),系統(tǒng)將自動判定答案正確性。

解題思路

??因?yàn)轭}目保證至少存在一個(gè)公共非空子串,那么該子串的第一個(gè)字符一定是一個(gè)公共字符。因此,我們只需找到任意一個(gè)在所有字符串中都出現(xiàn)過的字符,輸出它即可。

c++實(shí)現(xiàn)

#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;
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容