给你一个字符串 s
。
你的任务是重复以下操作删除 所有 数字字符:
- 删除 第一个数字字符 以及它左边 最近 的 非数字 字符。
请你返回删除所有数字字符以后剩下的字符串。
示例 1:
输入:s = "abc"
输出:"abc"
解释:
字符串中没有数字。
示例 2:
输入:s = "cb34"
输出:""
解释:
一开始,我们对 s[2]
执行操作,s
变为 "c4"
。
然后对 s[1]
执行操作,s
变为 ""
。
提示:
1 <= s.length <= 100
s
只包含小写英文字母和数字字符。- 输入保证所有数字都可以按以上操作被删除。
问题简要描述:返回剩下的字符串
Java
class Solution {
public String clearDigits(String s) {
StringBuilder ans = new StringBuilder();
for (char ch : s.toCharArray()) {
if (Character.isDigit(ch)) {
ans.deleteCharAt(ans.length() - 1);
} else {
ans.append(ch);
}
}
return ans.toString();
}
}
Python3
class Solution:
def clearDigits(self, s: str) -> str:
ans = []
for c in s:
if c.isdigit():
ans.pop()
else:
ans.append(c)
return "".join(ans)
TypeScript
function clearDigits(s: string): string {
let ans = [];
for (const c of s) {
if (isNaN(parseInt(c))) {
ans.push(c);
} else {
ans.pop();
}
}
return ans.join("");
};
C++
class Solution {
public:
string clearDigits(string s) {
string ans;
for (char c : s) {
if (isdigit(c)) {
ans.pop_back();
}else {
ans.push_back(c);
}
}
return ans;
}
};
Go
func clearDigits(s string) string {
ans := []byte{}
for i := range s {
if s[i] >= '0' && s[i] <= '9' {
ans = ans[:len(ans)-1]
} else {
ans = append(ans, s[i])
}
}
return string(ans)
}