当前位置: 首页 > article >正文

【百日算法计划】:每日一题,见证成长(020)

题目

删除字符串中的所有相邻重复项

给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。
在 S 上反复执行重复项删除操作,直到无法继续删除。
在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。
输入:“abbaca”
输出:“ca”

思路

  • 栈的解法,判断字符与栈顶元素是否相等,相等则弹出栈顶元素,否则将字符押入栈(注意:不需要构造对象计数)
public class Code09 {
    //栈解法
    public String removeDuplicates(String s) {
        if (s == null) return null;
        Stack<Character> stack = new Stack<>();
        int n = s.length();
        for (int i = 0; i < n; i++) { //顺序处理每个字符
            char c = s.charAt(i);
            if (!stack.isEmpty() && c == stack.peek()){
                stack.pop();
            } else {
                stack.push(c);
            }
        }
        int size = stack.size();
        char[] chars = new char[size];
        for (int i = size-1; i >= 0; i--) {
            chars[i] = stack.pop();
        }
        String s1 = String.valueOf(chars);
        return s1;
    }   
}

http://www.kler.cn/news/319678.html

相关文章:

  • 如何查看线程
  • 项目第一弹:RabbitMQ介绍
  • C语言之预处理详解(完结撒花)
  • JAVA链表
  • 网站在线客服插件配置
  • Stable Diffusion的高分辨率修复(Hires.fix)
  • 嵌入式单片机中can总线调试方法
  • 漏洞扫描工具使用
  • vulnhub(11):derpnstink(hydra爆破用户名和密码、验证的文件上传)
  • 多表查询。
  • 以太坊客户端Geth的介绍与搭建
  • (PySpark)RDD实验实战——取一个数组的中间值
  • 求一个数的因子数(c语言)
  • C语言 | Leetcode C语言题解之第416题分割等和子集
  • 自然场景文本定位系统源码分享
  • MFC -文件类控件
  • 暑期内卷!就练这400页软件测试面试题(附答案解析)!
  • fmql之ubuntu添加dhcp服务
  • 函数题 7-7 12-24小时制【PAT】
  • Postgresql一行命令备份(pg_dump版)
  • 力扣题解2374
  • 机器学习 | 使用scikit-learn学习Python中的PCA(主成分分析)
  • 无服务器计算构建人工智能管理区块链系统
  • Varjo在芬兰开设新工厂,以满足国防部门在XR模拟训练中的需求
  • 智能识别猫猫
  • 【JVM】垃圾回收机制|死亡对象的判断算法|垃圾回收算法
  • 谷歌的AI反击战:创始人谢尔盖·布林的回归与大模型组合的未来
  • vue2使用npm引入依赖(例如axios),报错Module parse failed: Unexpected token解决方案
  • 复制他人 CSDN 文章到自己的博客
  • 快递物流短信API接口代码