LeetCode-1309-解码字母到整数映射

2020-10-14  本文已影响0人  阿凯被注册了

给你一个字符串 s,它由数字('0' - '9')和 '#' 组成。我们希望按下述规则将 s 映射为一些小写英文字符:
字符('a' - 'i')分别用('1' - '9')表示。
字符('j' - 'z')分别用('10#' - '26#')表示。
返回映射之后形成的新字符串。
题目数据保证映射始终唯一。


image.png

解题思路:

  1. 映射产出字典a;
  2. 倒序遍历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)
上一篇下一篇

猜你喜欢

热点阅读