描述
??藏寶秘窟的大門上有一把密碼鎖,只有輸入正確的密碼才能打開。大門旁刻有 n 個(gè)僅由小寫字母組成的字符串。茉茉的研究表明,只要是這
n 個(gè)字符串的公共非空子串,就能作為密碼開啟大門。請你幫助茉茉給出任意一個(gè)滿足條件的密碼。我們可以證明,一定存在滿足題意的答案。
??【名詞解釋】公共子串:n 個(gè)字符串的一個(gè)公共子串,是指在這 n 個(gè)字符串中均出現(xiàn)過的一段連續(xù)字符。
輸入描述:
??在一行上輸入一個(gè)整數(shù) ,代表字符串的數(shù)量。
??此后 行,每行輸入一個(gè)僅由小寫字母組成的字符串
。保證
輸出描述:
??輸出一行一個(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;
}