题解 | #简单密码#

简单密码

https://www.nowcoder.com/practice/7960b5038a2142a18e27e4c733855dac

我的思路:
# 1、只变换大小写字母,不变换数字
# 2、小写字母直接映射成对应数字,可以用字典(哈希表)来映射,大写字符则转换为对应小写字母下一位,注意Z的下一位是a

adict = {
        'a': 2, 'b': 2, 'c': 2, 'd': 3, 'e': 3, 'f': 3, 'g': 4, 'h': 4, 'i': 4,
        'j': 5, 'k': 5, 'l': 5, 'm': 6, 'n': 6, 'o': 6, 'p': 7, 'q': 7, 'r': 7,
        's': 7, 't': 8, 'u': 8, 'v': 8, 'w': 9, 'x': 9, 'y': 9, 'z': 9
        }

# 大小写字符的ascii值的差
sub = ord('a') - ord('A')

def trans(ch:str):
    if ch.islower():
        return adict[ch]
    elif ch.isupper():
        if ch == 'Z':
            return 'a'
        else:
            return chr(ord(ch)+1+sub)
    else:
        return ch

import sys
lines = sys.stdin.read().split("\n")[:-1]
for item in lines:
    tmp = ""
    for ch in item:
        tmp = "".join((tmp, str(trans(ch))))
    print(tmp)

全部评论

相关推荐

09-24 18:30
已编辑
长春工业大学 产品经理
小肥罗:HR就是好人的缩写哈哈哈哈
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务