【力扣】1309:解碼字母到整數映射 | 哈希映射 | 排序函數

題目描述

給你一個字符串 s,它由數字(‘0’ - ‘9’)和 ‘#’ 組成。我們希望按下述規則將 s 映射爲一些小寫英文字符:

字符(‘a’ - ‘i’)分別用(‘1’ - ‘9’)表示。
字符(‘j’ - ‘z’)分別用(‘10#’ - ‘26#’)表示。
返回映射之後形成的新字符串。

題目數據保證映射始終唯一。

提示:
1 <= s.length <= 1000
s[i] 只包含數字(‘0’-‘9’)和 ‘#’ 字符。
s 是映射始終存在的有效字符串。

算法思路

先建立映射表,然後很顯然的先進行j-z的映射修改,這樣剩下的數字就不會出現誤解。

class Solution:
    def freqAlphabets(self, s: str) -> str:
        d={'1': 'a', '2': 'b', '3': 'c', '4': 'd', '5': 'e', '6': 'f', '7': 'g', '8': 'h', '9': 'i', '10#': 'j', '11#': 'k', '12#': 'l', '13#': 'm', '14#': 'n', '15#': 'o', '16#': 'p', '17#': 'q', '18#': 'r', '19#': 's', '20#': 't', '21#': 'u', '22#': 'v', '23#': 'w', '24#': 'x', '25#': 'y', '26#': 'z'}
        for i in sorted(d.keys(),key=lambda x:x[-1]):
            s=s.replace(i,d[i])
        return s

執行用時 :32 ms, 在所有 Python3 提交中擊敗了88.76%的用戶
內存消耗 :13.5 MB, 在所有 Python3 提交中擊敗了5.26%的用戶

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章