1029 旧键盘 (20 分)
旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现。现在给出应该输入的一段文字、以及实际被输入的文字,请你列出肯定坏掉的那些键。
输入格式:
输入在 2 行中分别给出应该输入的文字、以及实际被输入的文字。每段文字是不超过 80 个字符的串,由字母 A-Z(包括大、小写)、数字 0-9、以及下划线 _
(代表空格)组成。题目保证 2 个字符串均非空。
输出格式:
按照发现顺序,在一行中输出坏掉的键。其中英文字母只输出大写,每个坏键只输出一次。题目保证至少有 1 个坏键。
输入样例:
7_This_is_a_test
_hs_s_a_es
输出样例:
7TI
本题中我的思路是比较对应每一位的字符,然后不一样的字符就是坏键,同时把错误的序列相应的位置插入正确的字符来保证每一位的对应
例如:
THIS
HIS
将找到的少的坏键补充到第一位,然后下一位再比较
# 正确的输入
correct = input()
# 错误的输入
error = input()
# 统一都转为大写字母
correct = correct.upper()
error = error.upper()
# 全部转换为列表
correct = list(correct)
error = list(error)
# 正确输入的长度
length = len(correct)
# 记录坏的按键
bad = ''
for i in range(length):
try:
# 一位一位进行比较,通过判断对应位置字母是否相同来找到缺少的字母
if correct[i] != error[i]:
# 防止出现重复的情况,赋值前都判断一下该符号是不是在最后输出的部分里
if correct[i] not in bad:
# 添加到坏键
bad += correct[i]
# 补全错误序列的少的部分,否则位置对应不上去,无法进行比较
error.insert(i, correct[i])
# 应对错误序列缺少正确序列最后一个字母的情况,否则会出现list越界
# 例如本题中到i=15时,但是对应error长度只有15.最高位是error[14],就会出现超过范围
except:
if correct[i] not in bad:
bad += correct[i]
print(bad)