📜  计数岩石样本| TCS Codevita 2020(1)

📅  最后修改于: 2023-12-03 15:27:57.318000             🧑  作者: Mango

计数岩石样本| TCS Codevita 2020

计数岩石样本是TCS Codevita 2020比赛的一道题目。本题的主要目的是统计由小写字母组成,并出现在所有样本中的字母的个数。下面是题目描述:

题目描述:

输入N个字符串,每个字符串含有小写字母。输出这些字符串中公共出现的字符及出现的次数。

输入参数:
  • 第1行表示字符串个数N (1 ≤ N ≤ 10^2).
  • 接下来N行,每行表示一个字符串。
输出:
  • 多行,每行一个字符以及对应的出现次数,按照ASCII码递增顺序输出。
示例:

输入:

5
abcd
abce
eeeee
abcde
abf

输出:

a 3
b 2
c 2
e 4
解法:

由于要求计数所有样本中的公共字符,所以我们可以对于每个字符都统计是否出现在所有字符串中。对于每个字符,如果在所有字符串中都至少出现了一次,那么我们就可以将其计入答案中。在代码实现中,我们可以利用哈希表来统计每个字符出现的次数。

下面是代码实现(Python):

from collections import defaultdict

# 读入输入数据
n = int(input())
inputs = []
for i in range(n):
    inputs.append(input())

# 计数
counts = defaultdict(int)
for input in inputs:
    for c in set(input):
        counts[c] += 1

# 输出
for c, count in sorted(counts.items()):
    if count == n:
        print(c, count)

以上代码首先创建一个字符串列表,用于存储输入的所有字符串。

然后对于每一字符串,我们统计其中出现的所有字符及其出现次数,并将这些统计结果保存到一个哈希表中。在计算出所有字符的出现次数后,我们只需要输出在所有字符串中都至少出现一次的字符及其出现次数即可。