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
广告