Skip to main content

Replace All Digits with Characters

LeetCode 1954 | Difficulty: Easy​

Easy

Problem Description​

You are given a 0-indexed string s that has lowercase English letters in its even indices and digits in its odd indices.

You must perform an operation shift(c, x), where c is a character and x is a digit, that returns the x^th 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 the result of the shift(s[i-1], s[i]) operation.

Return s* after replacing all digits. It is guaranteed that shift(s[i-1], s[i]) will never exceed *'z'.

Note that shift(c, x) is not a preloaded function, but an operation to be implemented as part of the solution.

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'

Example 2:

Input: s = "a1b2c3d4e"
Output: "abbdcfdhe"
Explanation: The digits are replaced as follows:
- s[1] -> shift('a',1) = 'b'
- s[3] -> shift('b',2) = 'd'
- s[5] -> shift('c',3) = 'f'
- s[7] -> shift('d',4) = 'h'

Constraints:

- `1 <= s.length <= 100`

- `s` consists only of lowercase English letters and digits.

- `shift(s[i-1], s[i]) <= 'z'` for all **odd** indices `i`.

Topics: String


Approach​

String Processing​

Consider character frequency counts, two-pointer approaches, or building strings efficiently. For pattern matching, think about KMP or rolling hash. For palindromes, expand from center or use DP.

When to use

Anagram detection, palindrome checking, string transformation, pattern matching.


Solutions​

Solution 1: C# (Best: 101 ms)​

MetricValue
Runtime101 ms
Memory35.6 MB
Date2022-02-02
Solution
public class Solution {
public string ReplaceDigits(string s) {
int n = s.Length;
char[] result = new char[n];
int i = 0;
while(i<n)
{
if(!char.IsDigit(s[i])) result[i] = s[i];
else
{
result[i] = (char)(s[i-1]+(s[i]-'0'));
}
i++;
}
return new string(result);
}
}

Complexity Analysis​

ApproachTimeSpace
Solution$O(n)$$O(1) to O(n)$

Interview Tips​

Key Points
  • Start by clarifying edge cases: empty input, single element, all duplicates.
  • LeetCode provides 2 hint(s) for this problem β€” try solving without them first.
πŸ’‘ Hints

Hint 1: We just need to replace every even positioned character with the character s[i] positions ahead of the character preceding it

Hint 2: Get the position of the preceeding character in alphabet then advance it s[i] positions and get the character at that position