题目如下:
Given a string
s
formed by digits ('0'
-'9'
) and'#'
. We want to maps
to English lowercase characters as follows:
- Characters (
'a'
to'i')
are represented by ('1'
to'9'
) respectively.- Characters (
'j'
to'z')
are represented by ('10#'
to'26#'
) respectively.Return the string formed after mapping.
It's guaranteed that a unique mapping will always exist.
Example 1:
Input: s = "10#11#12" Output: "jkab" Explanation: "j" -> "10#" , "k" -> "11#" , "a" -> "1" , "b" -> "2".Example 2:
Input: s = "1326#" Output: "acz"Example 3:
Input: s = "25#" Output: "y"Example 4:
Input: s = "12345678910#11#12#13#14#15#16#17#18#19#20#21#22#23#24#25#26#" Output: "abcdefghijklmnopqrstuvwxyz"Constraints:
1 <= s.length <= 1000
s[i]
only contains digits letters ('0'
-'9'
) and'#'
letter.s
will be valid string such that mapping is always possible.
解题思路:遍历s,判断s[i]后面的第二个元素是否是'#'。如果不是,s[i]转换成对应字母;如果是,s[i]和s[i+1]一起转换成对应字母。
代码如下:
class Solution(object): def freqAlphabets(self, s): """ :type s: str :rtype: str """ res = '' inx = 0 while inx < len(s): if s[inx] == '#': inx += 1 elif inx + 2 < len(s) and s[inx+2] == '#': res += chr(ord('a') + int(s[inx] + s[inx+1]) - 1) inx += 2 else: res += chr(ord('a') + int(s[inx]) - 1) inx += 1 return res