Welcome to Subscribe On Youtube
3174. Clear Digits
Description
You are given a string s
.
Your task is to remove all digits by doing this operation repeatedly:
- Delete the first digit and the closest non-digit character to its left.
Return the resulting string after removing all digits.
Example 1:
Input: s = "abc"
Output: "abc"
Explanation:
There is no digit in the string.
Example 2:
Input: s = "cb34"
Output: ""
Explanation:
First, we apply the operation on s[2]
, and s
becomes "c4"
.
Then we apply the operation on s[1]
, and s
becomes ""
.
Constraints:
1 <= s.length <= 100
s
consists only of lowercase English letters and digits.- The input is generated such that it is possible to delete all digits.
Solutions
Solution 1: Stack + Simulation
We use a stack stk
to simulate this process. We traverse the string s
. If the current character is a digit, we pop the top element from the stack. Otherwise, we push the current character into the stack.
Finally, we concatenate the elements in the stack into a string and return it.
The time complexity is $O(n)$, and the space complexity is $O(n)$. Where $n$ is the length of the string s
.
-
class Solution { public String clearDigits(String s) { StringBuilder stk = new StringBuilder(); for (char c : s.toCharArray()) { if (Character.isDigit(c)) { stk.deleteCharAt(stk.length() - 1); } else { stk.append(c); } } return stk.toString(); } }
-
class Solution { public: string clearDigits(string s) { string stk; for (char c : s) { if (isdigit(c)) { stk.pop_back(); } else { stk.push_back(c); } } return stk; } };
-
class Solution: def clearDigits(self, s: str) -> str: stk = [] for c in s: if c.isdigit(): stk.pop() else: stk.append(c) return "".join(stk)
-
func clearDigits(s string) string { stk := []byte{} for i := range s { if s[i] >= '0' && s[i] <= '9' { stk = stk[:len(stk)-1] } else { stk = append(stk, s[i]) } } return string(stk) }
-
function clearDigits(s: string): string { const stk: string[] = []; for (const c of s) { if (!isNaN(parseInt(c))) { stk.pop(); } else { stk.push(c); } } return stk.join(''); }