[LeetCode]#1844. Replace All Digits with Characters

Fatboy Slim
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' and shift('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:

  1. Convert s to ASCII.
  2. if ord >97 and ord <123, ans=ans+s[i]
  3. else, S[i-1] + S[i] ASCII number. Convert ASCII number to string.
  4. 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:

--

--

Fatboy Slim
Fatboy Slim

Written by Fatboy Slim

Interesting in any computer science.

No responses yet