📌  相关文章
📜  国际空间研究组织 | ISRO CS 2011 |问题 33(1)

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

国际空间研究组织 | ISRO CS 2011 | 问题 33

本文将介绍国际空间研究组织(ISRO)2011年的计算机科学考试(CS)第33题。

题目描述

给定一个字符串,找到它的所有子串,并统计其中不同字符的个数。

输入格式

第一行为测试数据的数量。

每组测试数据有一行字符串。

输出格式

对于每组测试数据,输出一行,其中包含一个整数代表该字符串中所有子串中不同字符的个数的和。

样例输入
2
abcd
abab
样例输出
30
14
解题思路

对于每个子串,使用set数据结构记录其中不同字符的个数。然后累加所有子串的不同字符个数即为答案。具体实现参见下面的Python代码。

代码实现
# 导入set数据结构
from collections import defaultdict, Set

# 计算子串的不同字符个数
def count_unique_characters(substring: str) -> int:
    return len(set(substring))

# 主函数
def main():
    # 读取测试数据数量
    test_cases = int(input())

    # 处理每组测试数据
    for _ in range(test_cases):
        # 读取字符串
        string = input()

        # 记录所有子串的不同字符个数之和
        total_count = 0

        # 处理所有子串
        for i in range(len(string)):
            for j in range(i + 1, len(string) + 1):
                substring = string[i:j]
                count = count_unique_characters(substring)
                total_count += count

        # 输出结果
        print(total_count)

if __name__ == '__main__':
    main()

以上代码实现了对所有子串的处理,并使用set数据结构统计每个子串中不同字符的个数。最后累加所有子串的不同字符个数即可得到答案,并输出。