📌  相关文章
📜  教资会网络 | UGC NET CS 2016 年 7 月 – II |问题 13(1)

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

UGC NET CS 2016年7月 – II 编程题

本题要求编写程序,在给定的字符串中查找重复的字符,并输出重复字符和其在字符串中出现的位置。

输入格式
  • 输入仅一行字符串S,其中$1 \leq |S| \leq 10^4$。
输出格式
  • 输出若干行,每行包括两个整数和一个字符,以空格分隔。其中,前两个整数表示同一个字符在字符串中出现的位置,第三个字符为重复的字符。
代码实现
s = input().strip()

# 构建一个字典,存储每个字符出现的位置
d = {}
for i, c in enumerate(s):
    if c not in d:
        d[c] = [i]
    else:
        d[c].append(i)

# 遍历字典,输出重复字符
for key in d:
    if len(d[key]) > 1:
        for i in d[key]:
            print(i, key)
代码解释
  • 首先读取输入字符串$s$。
  • 然后构建一个字典$d$,键为每个出现的字符,值为该字符出现的位置列表。
  • 遍历字典$d$,对于每个键值对,如果值的长度大于$1$(即这个字符出现了至少两次),就遍历它的值,输出每个位置和该字符。

本题主要考察对字典的使用和对字符串遍历的掌握,同时需要注意输入字符串中可能有空格,需要使用strip()方法去掉空格。