在Python中将字符串从字母解密为整数映射

假设我们有一个由数字('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,而map ['']:='',ad i:=字符串长度– 1

  • 当我> 0

    • temp:=“”

    • 对于j:= i – 2到i,temp:= temp + s [j]

    • ans:= map [temp] + ans

    • 使我减少3

    • 如果s [i]是#,则

    • 否则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