题解 | #简单密码#
简单密码
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)
查看9道真题和解析