1.题目描述
给你一个字符串
s
。你的任务是重复以下操作删除 所有 数字字符:
- 删除 第一个数字字符 以及它左边 最近 的 非数字 字符。
请你返回删除所有数字字符以后剩下的字符串。
示例 1:
输入:s = "abc"
输出:"abc"
解释:
字符串中没有数字。
示例 2:
输入:s = "cb34"
输出:""
解释:
一开始,我们对
s[2]
执行操作,s
变为"c4"
。然后对
s[1]
执行操作,s
变为""
。提示:
1 <= s.length <= 100
s
只包含小写英文字母和数字字符。- 输入保证所有数字都可以按以上操作被删除
2.解题思路
我们使用一个stringBuilder收集遍历到的字母,当遍历到数字时,我们就把stringBuilder中最后一个字母删除,因为它就是当前数字左边第一个字母。如此,遍历结束后,stringBuilder中的值即为所求
3.代码实现
class Solution {
public String clearDigits(String s) {
int cnt = 0;
StringBuilder sb = new StringBuilder();
for (char c : s.toCharArray()) {
if (Character.isDigit(c) && cnt > 0) {
cnt -= 1;
sb.deleteCharAt(cnt);
} else {
sb.append(c);
cnt += 1;
}
}
return sb.toString();
}
}