題目描述
給你一個字符串 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%的用戶