假设我们有一个由数字('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
让我们看下面的实现以更好地理解-
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