当前位置: 首页 > 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/a/312311.html

相关文章:

  • ubuntu20.04 解决Pytorch默认安装CPU版本的问题
  • Linux 函数在多个地方被同时调用时,函数中的变量如何管理,确保互不影响
  • 继承和多态(上)
  • 【软件工程】一篇入门UML建模图(类图)
  • 2024年11月13日
  • 【前端】Vue中如何避免出现内存泄漏
  • 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实战应用