【Leetcode:3174. 清除数字 + 栈】

在这里插入图片描述

算法题

算法刷题专栏 | 面试必备算法 | 面试高频算法
越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨
作者简介:硕风和炜,CSDN-Java领域优质创作者,保研|国家奖学金|高中学习JAVA|大学完善JAVA开发技术栈|面试刷题|面经八股文|经验分享|好用的网站工具分享
恭喜你发现一枚宝藏博主,赶快收入囊中吧
人生如棋,我愿为卒,行动虽慢,可谁曾见我后退一步?

算法题

在这里插入图片描述
【Leetcode:3174. 清除数字 + 栈】_第1张图片

目录

    • 题目链接
    • ⛲ 题目描述
    • 求解思路&实现代码&运行结果
      • ⚡ 栈
        • 求解思路
        • 实现代码
        • 运行结果
    • 共勉

题目链接

  • 3174. 清除数字

⛲ 题目描述

给你一个字符串 s 。

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

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

示例 1:

输入:s = “abc”

输出:“abc”

解释:

字符串中没有数字。

示例 2:

输入:s = “cb34”

输出:“”

解释:

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

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

提示:

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

求解思路&实现代码&运行结果


⚡ 栈

求解思路
  1. 该题目通过栈的思想求解,遍历字符串,如果此时是数字则弹出栈顶的元素,否则把字符入栈。最后从栈底到栈顶就是答案。
  2. 整个实现过程通过StringBuilder或者StringBuffer来求解。
  3. 有了基本的思路,接下来我们就来通过代码来实现一下的解法。
实现代码
class Solution {
    public String clearDigits(String s) {
        StringBuilder sb = new StringBuilder("");
        for (int right = 0; right < s.length(); right++) {
            char c = s.charAt(right);
            if (Character.isDigit(c)) {
                sb.deleteCharAt(sb.length() - 1);
            } else {
                sb.append(c);
            }
        }
        return sb.toString();
    }
}
运行结果

【Leetcode:3174. 清除数字 + 栈】_第2张图片


共勉

最后,我想和大家分享一句一直激励我的座右铭,希望可以与大家共勉!

在这里插入图片描述

你可能感兴趣的:(LeetCode每日一题打卡,leetcode,算法,java,栈)