给你一个字符串 s,它由数字('0' - '9')和 '#' 组成。我们希望按下述规则将 s 映射为一些小写英文字符:
字符('a' - 'i')分别用('1' - '9')表示。
字符('j' - 'z')分别用('10#' - '26#')表示。
返回映射之后形成的新字符串。
题目数据保证映射始终唯一。
image.png
解题思路:
- 映射产出字典a;
- 倒序遍历s,遇#号再获取前两位。
Python3代码:
class Solution:
def freqAlphabets(self, s: str) -> str:
a = {}
for i in range(1, 10):
a[i] = chr(ord('a')+i-1)
for i in range(10, 27):
a[str(i)+'#'] = chr(ord('j')+i-10)
i = len(s)-1
ans=[]
while i >= 0:
if s[i] != '#':
ans.append(a[int(s[i])])
i-=1
else:
ans.append(a[s[i-2]+s[i-1]+s[i]])
i-=3
ans.reverse()
return ''.join(ans)
网友评论