1309-解码字母到整数映射
给你一个字符串 s
,它由数字('0'
- '9'
)和 '#'
组成。我们希望按下述规则将 s
映射为一些小写英文字符:
- 字符(
'a'
-'i'
)分别用('1'
-'9'
)表示。 - 字符(
'j'
-'z'
)分别用('10#'
-'26#'
)表示。
返回映射之后形成的新字符串。
题目数据保证映射始终唯一。
示例 1:
**输入:** s = "10#11#12"
**输出:** "jkab"
**解释:** "j" -> "10#" , "k" -> "11#" , "a" -> "1" , "b" -> "2".
示例 2:
**输入:** s = "1326#"
**输出:** "acz"
提示:
1 <= s.length <= 1000
s[i]
只包含数字('0'
-'9'
)和'#'
字符。s
是映射始终存在的有效字符串。
方法一:遍历
我们对字符串 s
进行顺序遍历。
当遍历到位置 i
时,我们首先向后看两个字符(即 s[i + 2]
),如果 s[i + 2]
存在且为 '#'
,那么位置 i
,i + 1
和 i + 2
表示一个 'j'
到 'z'
之间的字符,否则位置 i
表示一个 'a'
到 'i'
的字符。
根据对 s[i + 2]
的判断,我们可以使用字符串转整数的方法得到对应的字符的 ASCII 码,从而得到字符本身。在这之后,我们将位置 i
后移,继续进行遍历直到结束。
1 | class Solution { |
1 | class Solution: |
复杂度分析
时间复杂度:O(N),其中 N 是字符串
s
的长度。空间复杂度:O(1)。
Comments