Python 中從字母到整數對映解密字串
假設我們有一個字串 s,它由數字('0' - '9')和 '#' 組成。我們需要按照以下方式將 s 對映到一個英文字母小寫字元:
字元 ('a' 到 'i') 分別由 ('1' 到 '9') 表示。
字元 ('j' 到 'z') 分別由 ('10#' 到 '26#') 表示。
我們需要找到對映後的字串。我們假設始終存在唯一的對映。因此,如果輸入類似於“10#11#12”,則它將是“jkab”。因為 10# 是 j,11# 是 k,1 是 a,2 是 b。
為了解決這個問題,我們將遵循以下步驟:
建立一個對映,用於儲存所有字元及其對應的 ASCII 值。
ans := 0,map[‘’] := ‘’,i := 字串長度 – 1
當 i > 0 時
如果 s[i] 是 '#',則
temp := “”
從 j := i – 2 到 i,temp := temp + s[j]
ans := map[temp] + ans
將 i 減小 3
否則 ans := map[s[i]] + ans,並將 i 減小 1
返回 ans
示例(Python)
讓我們看看下面的實現,以便更好地理解:
class Solution(object):
def freqAlphabets(self, s):
m = {}
x = 'a'
for i in range(1, 27):
m[str(i)] = x
x = chr(ord(x) + 1)
ans = ""
m['']=''
i = len(s) - 1
while i >= 0:
if s[i] == "#":
temp = ""
for j in range(i - 2, i):
temp += s[j]
ans = m[str(temp)] + ans
i -= 3
else:
ans = m[s[i]] + ans
i -= 1
return ans
ob1 = Solution()
print(ob1.freqAlphabets("17#123#5621#"))輸入
"17#123#5621#"
輸出
qawefu
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP