- 题目描述
旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现。现在给出应该输入的一段文字、以及坏掉的那些键,打出的结果文字会是怎样?
- 输入描述
输入在2行中分别给出坏掉的那些键、以及应该输入的文字。其中对应英文字母的坏键以大写给出;每段文字是不超过10^5个字符的串。可用的字符包括字母[a-z, A-Z]、数字0-9、以及下划线“_”(代表空格)、“,”、“.”、“-”、“+”(代表上档键)。题目保证第2行输入的文字串非空。
注意:如果上档键坏掉了,那么大写的英文字母无法被打出。
- 输出描述
在一行中输出能够被打出的结果文字。如果没有一个字符能被打出,则输出空行。
- 输入例子
7+IE.
7_This_is_a_test.
- 输出例子
_hs_s_a_tst
s1 = input() # 坏掉的键
s2 = input() # 想要输出的字符序列,也是最终的结果序列。
s2 = list(s2)
for i in range(len(s1)): # 遍历每一个坏掉的键
if s1[i] == '+': # 大写键故障,把s2中大写字母去掉
count = 0
for j in range(len(s2)):
if 65 <= ord(s2[j]) <= 90:
count += 1
while True:
if count == 0:
break
for k in range(len(s2)):
if 65 <= ord(s2[k]) <= 90:
s2.remove(s2[k])
count -= 1
break
# 去除出现在s1中的字符。注意:s1中字符统一是大写表示,s2中需要去除对应的大小写字符。
length = len(s2)
x = 0
while x < length:
if s2[x] == s1[i] or s2[x].upper() == s1[i]:
# l.remove(l[x])
del s2[x]
x -= 1
length -= 1
x += 1
if len(s2) == 0:
print()
else:
for i in s2:
print(i, end='')
注意点⚠️:
- 如果坏掉的键中有大写键’+’,那么结果序列中不能出现大写字母。
- 坏键中的字符,不可能出现在结果序列中。
- 在列表中,对指定元素进行去重处理不适合用for循环,因为每次remove()操作,会使列表长度变小,后续会出现’list out of range’问题。
- 存在结果序列为空的情况,按照题目要求输出空行。

1064

被折叠的 条评论
为什么被折叠?



