3174. 清除数字

https://leetcode.cn/problems/clear-digits/description/?envType=daily-question&envId=2024-09-05

题目描述

给你一个字符串 s 。

你的任务是重复以下操作删除 所有 数字字符:

删除 第一个数字字符 以及它左边 最近 的 非数字 字符。
请你返回删除所有数字字符以后剩下的字符串。

示例 1:

输入:s = “abc”

输出:”abc”

解释:

字符串中没有数字。

示例 2:

输入:s = “cb34”

输出:””

解释:

一开始,我们对 s[2] 执行操作,s 变为 “c4” 。

然后对 s[1] 执行操作,s 变为 “” 。

提示:

1 <= s.length <= 100
s 只包含小写英文字母和数字字符。
输入保证所有数字都可以按以上操作被删除。

解题思路

直接暴力遍历
执行用时分布3ms击败17.92%
复杂度分析消耗内存分布42.18MB击败5.05%

代码编写

public String clearDigits(String s) {  
    char[] chars = s.toCharArray();  
    String[] temp = new String[chars.length];  
    LinkedList<Integer> integers = new LinkedList<>();  
    for (int i = 0; i < chars.length; i++) {  
        char aChar = chars[i];  
        if (aChar >= '0' && aChar <= '9') {  
            temp[i] = "";  
            if (!integers.isEmpty()) {  
                Integer integer = integers.removeFirst();  
                temp[integer] = "";  
            }  
        } else {  
            temp[i] = aChar + "";  
            integers.push(i);  
        }  
    }  
    return String.join("", temp);  
}

单元测试

System.out.println(new Solution3174().clearDigits("ag3"));

额外补充

// todo优化代码 变的更快