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

更新於: 2020年4月27日

677 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.