[LeetCode]#1844. Replace All Digits with Characters
2 min readJul 19, 2021
Environment: Python 3.8
Key technique: ASCII, ord, chr
You are given a 0-indexed string s
that has lowercase English letters in its even indices and digits in its odd indices.
There is a function shift(c, x)
, where c
is a character and x
is a digit, that returns the xth
character after c
.
- For example,
shift('a', 5) = 'f'
andshift('x', 0) = 'x'
.
For every odd index i
, you want to replace the digit s[i]
with shift(s[i-1], s[i])
.
Return s
after replacing all digits. It is guaranteed that shift(s[i-1], s[i])
will never exceed 'z'
.
Example 1:
Input: s = "a1c1e1"
Output: "abcdef"
Explanation: The digits are replaced as follows:
- s[1] -> shift('a',1) = 'b'
- s[3] -> shift('c',1) = 'd'
- s[5] -> shift('e',1) = 'f'
Analysis:
- Convert s to ASCII.
- if ord >97 and ord <123, ans=ans+s[i]
- else, S[i-1] + S[i] ASCII number. Convert ASCII number to string.
- Combine all strings.
Solution:
class Solution:
def replaceDigits(self, s):
ans=''
for i in range(len(s)):
if ord(s[i])>96 and ord(s[i])<123:
ans=ans+s[i]
else:
ans=ans+(chr(ord(s[i-1])+int(s[i])))
return ans
Submissions: