PAT-1023-旧键盘打字-python

  • 题目描述

旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现。现在给出应该输入的一段文字、以及坏掉的那些键,打出的结果文字会是怎样?

  • 输入描述

输入在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='')

注意点⚠️:

  1. 如果坏掉的键中有大写键’+’,那么结果序列中不能出现大写字母。
  2. 坏键中的字符,不可能出现在结果序列中。
  3. 在列表中,对指定元素进行去重处理不适合用for循环,因为每次remove()操作,会使列表长度变小,后续会出现’list out of range’问题。
  4. 存在结果序列为空的情况,按照题目要求输出空行。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值