字符串压缩

题目链接

字符串压缩

题目描述

注意点

  • 字符串长度在[0, 50000]范围内
  • 若"压缩"后的字符串没有变短,则返回原先的字符串
  • 字符串中只包含小写英文字母(a至z)

解答思路

  • 模拟思路,使用pre存储当前位置的前一个字符,使用sum存储前一个字符重复的数量,当访问到当前位置的字符c时,如果c和pre相同,则只需要将sum加1,如果c和pre不同,则需要先将pre的数量写到结果中,然后将c写到结果中,还要更新pre和sum的值

代码

java 复制代码
class Solution {
    public String compressString(String s) {
        StringBuilder sb = new StringBuilder();
        char pre = '0';
        int sum = 0;
        for (char c : s.toCharArray()) {
            if (c == pre) {
                sum++;
                continue;
            }
            if (sum != 0) {
                sb.append(sum);
            }
            sb.append(c);
            pre = c;
            sum = 1;
        }
        if (sum != 0) {
            sb.append(sum);
        }
        return sb.length() >= s.length() ? s : sb.toString();
    }
}

关键点

  • 注意遍历完字符串后,还要将最后的字符的出现次数写入到结果中
相关推荐
tankeven23 分钟前
HJ92 在字符串中找出连续最长的数字串
c++·算法
逆境不可逃32 分钟前
【从零入门23种设计模式03】创建型之建造者模式(简易版与导演版)
java·后端·学习·设计模式·职场和发展·建造者模式
小雨中_34 分钟前
3.1 RLHF:基于人类反馈的强化学习
人工智能·python·深度学习·算法·动态规划
relis41 分钟前
从 dma-buf 到 tensor parallel:跨越领域的零拷贝模式
算法
一条大祥脚1 小时前
Manacher/马拉车算法
算法
phoenix@Capricornus1 小时前
初等数学中点到直线的距离
人工智能·算法·机器学习
汤姆yu1 小时前
基于springboot的健身爱好者打卡与互动交流系统
java·spring boot·后端
田里的水稻1 小时前
FA_规划和控制(PC)-快速探索随机树(RRT)
人工智能·算法·数学建模·机器人·自动驾驶
jaysee-sjc1 小时前
十三、Java入门进阶:异常、泛型、集合与 Stream 流
java·开发语言·算法
百锦再2 小时前
Java Map常用方法和实现类深度详解
java·开发语言·spring boot·struts·kafka·tomcat·maven