在 Python 中解密从字母到整数的字符串映射

pythonserver side programmingprogramming更新于 2025/10/25 9:48:17

假设我们有一个由数字("0" - "9")和"#"组成的字符串 s。我们必须将 s 映射到一个小写英文字符 −

  • 字符 ('a' 到 'i') 分别由 ('1' 到 '9') 表示。

  • 字符 ('j' 到 'z') 分别由 ('10#' 到 '26#') 表示。

我们必须找到映射后形成的字符串。我们假设始终存在唯一的映射。因此,如果输入为 “10#11#12”,则它将为 “jkab”。因为 10# 是 j,11# 是 k,1 是 a,2 是 b。

为了解决这个问题,我们将遵循以下步骤 −

  • 创建一个映射来保存所有字符及其对应的 ASCII 值

  • ans := 0,and map[‘’] := ‘’,ad i := 字符串长度 – 1

  • while i > 0

    • if s[i] is #, then

      • temp := “”

      • for 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

相关文章


有用资源