描述
藏宝秘窟的大门上有一把密码锁,只有输入正确的密码才能打开。大门旁刻有 n 个仅由小写字母组成的字符串。茉茉的研究表明,只要是这
n 个字符串的公共非空子串,就能作为密码开启大门。请你帮助茉茉给出任意一个满足条件的密码。我们可以证明,一定存在满足题意的答案。
【名词解释】公共子串:n 个字符串的一个公共子串,是指在这 n 个字符串中均出现过的一段连续字符。
输入描述:
在一行上输入一个整数 ,代表字符串的数量。
此后 行,每行输入一个仅由小写字母组成的字符串
。保证
输出描述:
输出一行一个字符串,表示任意一个满足要求的公共子串。
如果存在多个可行答案,你可以输出其中任意一个,系统将自动判定答案正确性。
解题思路
因为题目保证至少存在一个公共非空子串,那么该子串的第一个字符一定是一个公共字符。因此,我们只需找到任意一个在所有字符串中都出现过的字符,输出它即可。
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;
}