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

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

题目

删除连续重复字符

字符串删除掉连续的3个重复的字符,比如"abbbc" 返回"ac" ,“abbbaad” 返回"d"

思路

  • 构造一个对象,属性为元素及个数;
  • 将对象加入到栈中,同时判断其元素的个数;
  • 当元素个数等于 3 时,则弹出栈。
public class Code02 {
    Stack<CharWithCount> stack = new Stack<>();
    /**
     * 用栈记录不能消除的元素
     * @param str
     * @return
     */
    public String remove(String str){
        int n = str.length();
        for (int i = 0; i < n; i++) { //顺序处理每个字符
            char c = str.charAt(i);
            //栈为空
            if (stack.isEmpty()){
                stack.push(new CharWithCount(c, 1));
                continue;
            }
            //栈不为空 栈顶元素跟c比较 且不相同
            CharWithCount topChar = stack.peek();
            if (topChar.c != c){
                stack.push(new CharWithCount(c, 1));
                continue;
            }

            //栈顶元素跟c相同,比较个数,如果已有2个,则弹出
            if (topChar.count == 2){
                stack.pop();
                continue;
            }
            //栈顶元素跟c相同 但不满足连连消
            topChar.count++;
        }

        //最后开始输出栈里面的元素
        int size = stack.size();
        char[] arr = new char[size];
        while (!stack.isEmpty()){
            char c = stack.pop().c;
            arr[size-1] = c;
            size--;
        }

        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < arr.length; i++) {
            sb.append(String.valueOf(arr[i]));
        }
        return sb.toString();
    }

    public class CharWithCount{
        public char c;
        public int count;
        public CharWithCount(){}
        public CharWithCount(char c,int count){
            this.c = c;
            this.count = count;
        }
    }
}

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

相关文章:

  • pytorch使用技巧
  • Designify——AI优化图像设计,自动去背景、调整构图、添加视觉效果,创建高质量的设计图像
  • 2024 Oracle CloudWorld的信息量实在太大了
  • Pikachu靶场之XSS
  • Leetcode面试经典150题-97.交错字符串
  • 记一次kafka消息丢失问题排查
  • [SDX35+WCN6856]SDX35 + WCN6856 WiFi可以up起来之后无法扫描到SSID
  • 7.sklearn-逻辑回归、精确率和召回率、ROC曲线和AUC指标
  • Java项目: 基于SpringBoot+mybatis+maven旅游管理系统(含源码+数据库+毕业论文)
  • nvm node管理工具常用指令
  • 编程基础:函数栈帧的创建和销毁
  • (十六)Ubuntu 20.04 下搭建PX4+MATLAB 仿真环境(HITL)
  • 无人机之AI跟踪篇
  • Facebook直播限流是什么原因?是ip地址导致的吗
  • Java商城的技术优势有哪些
  • Spring 出现 No qualifying bean of type ‘com.xxx‘ available 解决方法
  • 35.贪心算法2
  • [ffmpeg] 视频格式转换
  • 开发板与ubuntu建立网络通信(NFS和TFTP协议搭建)
  • elasticsearch实战应用
  • NAT网络地址转换
  • 【spring】spring框架中使用的设计模式有哪些,经典的设计模式应用,spring框架中哪些地方使用了哪些优秀的设计模式
  • 制作炫酷个人网页:用 HTML 和 CSS3 展现你的风格
  • macos清理垃圾桶时提示 “操作无法完成,因为该项目正在使用中” 解决方法 , 强制清理mac废纸篓 方法
  • 外国药品位置检测系统源码分享
  • 好用的XML解析库——fast-xml-parser
  • 应用案例|开源 PolarDB-X 在互联网安全场景的应用实践
  • YOLOv9改进系列,YOLOv9主干网络替换为RepViT (CVPR 2024,清华提出,独家首发),助力涨点
  • 基于Springboot的无接触外卖配送系统
  • 电风扇制造5G智能工厂物联数字孪生平台,推进制造业数字化转型