字符串压缩

题目链接

字符串压缩

题目描述

注意点

  • 字符串长度在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();
    }
}

关键点

  • 注意遍历完字符串后,还要将最后的字符的出现次数写入到结果中
相关推荐
Doubbbbbbble云14 分钟前
算法优化中的数学建模与理论界限分析4
算法·数学建模
垆边人似月.17 分钟前
华为机考题:字符个数统计
数据结构·算法·华为
一只旭宝18 分钟前
C++ 后端开发面试题整理
java·c++·面试
sunshine22 girl24 分钟前
Java学习五 面向对象高级5 内部类3-静态内部类和局部内部类(了解)
java·学习
en.en..26 分钟前
Linux 进程退出exit(函数)
java·开发语言·算法
李游Leo27 分钟前
HarmonyOS 7 TaskPool + Node-API + zstd:Native 批量压缩任务的主线程隔离、进度回传与资源收口【鸿蒙心迹】
java·华为·harmonyos
Light Gao29 分钟前
Encoder 与 Decoder 详解:从 Embedding 到 Seq2Seq 的完整数据流
java·开发语言·embedding
All for pursuit.1 小时前
【回溯-2】22.括号生成
数据结构·c++·算法·leetcode
程序猿乐锅1 小时前
【黑马点评 | 第十一篇】关注 Feed 流实现
java·数据库·redis·分布式·后端·缓存·maven
longlongzihan1 小时前
LeetCode 1004.最大连续1的个数III 滑动窗口及动态规划题解
c++·算法·leetcode·dp·滑动窗口