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

给你一个字符串 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)
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。