1029 旧键盘

1029 旧键盘 (20 分)

题意描述:

旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现。现在给出应该输入的一段文字、以及实际被输入的文字,请你列出肯定坏掉的那些键。

输入格式:
输入在 2 行中分别给出应该输入的文字、以及实际被输入的文字。每段文字是不超过 80 个字符的串,由字母 A-Z(包括大、小写)、数字 0-9、以及下划线 _(代表空格)组成。题目保证 2 个字符串均非空。

输出格式:
按照发现顺序,在一行中输出坏掉的键。其中英文字母只输出大写,每个坏键只输出一次。题目保证至少有 1 个坏键。

输入样例:
7_This_is_a_test
_hs_s_a_es
输出样例:
7TI


解题思路:

Alice: 元芳,你怎么看 ?
Bob: 大人,这道题目看似简单,倒是有些蹊跷啊 ~
Alice: 何处蹊跷 ?难道是键盘的使用者心猿意马,倒以为是键盘有问题 !
Bob: 非也,题目中说对应的字符不会出现,那么会不会出现不对应的字符呢 ?或者说有些坏键对应没有输出,有些坏键对应输出了别的字符。
Alice: 哦 ?
Bob: 大人,我们可以尝试这两种可能。
Alice: 哦 ?她爱你或者不她爱你吗 ?
Bob: 大人莫要取笑卑职了 ;— ) 就这个案子,我们可以先从 对应的字符没有输出查起。毕竟这是比较简单的一种情况。
Alice: 元芳啊,你可真令我刮目相看了。注意坏键的给出要按照它们出现的顺序来。
Bob: 是,大人。
Alice: 孺子可教,速去速回。
Bob: 卑职告辞 ~~~。


代码:

def main():
    string1 = input().upper()
    # 接收原本要输入的字符串
    string2 = input().upper()
    # 接收坏键盘的输入结果
    res = set(string1) - set(string2)
    # 得到那些在string1中出现而没有在string2中出现的字符,结合题意就是原本要输入但是没有显示的那些字符。
    # Python 中的set这一类型,就是集合类型,可以传入一个列表或者可迭代对象。
    # set的结果满足,单一,无序,有限的特性,set尤其擅长去除重复元素。
    answer = ""
    # 根据题意,需要按照字符出现的顺序给出坏键。
    for x in string1:
        # 按照字符出现的顺序找到所有的坏键
        if len(res) > 0 and x in res:
            # 如果 某个 字符在 res中出现,那就一定是一个坏键
            answer += x
            res.remove(x)
            # 找到一个坏键,把它添加到答案中。然后去除这个坏键,因为每个坏键只输出一次。
        elif len(res) == 0:
            #没有坏键就直接退出吧
            break
    print(answer)
    


if __name__ == '__main__':
    main()


易错点:

  • 题目中,坏键对应的字符就不会出现可以理解为输出为 “” ,而不会输出其他错误的字符。
  • 坏键要按照其在 原计划输入的字符串 中出现的顺序给出。

总结:


  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值