字符串压缩

题目链接

字符串压缩

题目描述

注意点

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

关键点

  • 注意遍历完字符串后,还要将最后的字符的出现次数写入到结果中
相关推荐
一技安身3 小时前
【java】JDK8 + JDK17 绿色解压共存方案-全程不修改任何系统环境变量
java·开发语言
飘尘3 小时前
从"算子"到"AI Infra":大模型背后看不见的那群人在忙什么
人工智能·算法·面试
mokongJ3 小时前
17 份异构销售数据的合并清洗方案:30 万行处理耗时 9.64 秒
数据结构
java、iOS、Vue3 小时前
Maven antrun vs Jenkins 脚本组装 deb的优缺点、适用场景
java·jenkins·maven
夏幻灵3 小时前
每日一题:LeetCode 3:无重复字符的最长子串——滑动窗口思路详解
算法·leetcode·职场和发展
hudd6683 小时前
JavaEE 初阶 - 多线程(初阶)
java·开发语言·java-ee
CarIise4 小时前
Java实训阶段查漏补缺复习笔记2
java·linux·算法
Wang's Blog4 小时前
Java框架 SpringCloud 快速入门: Feign 的性能优化
java·spring cloud·性能优化
无忧.芙桃4 小时前
C++ 并查集详解:原理、实现与应用
c语言·c++·算法·leetcode
蛋蛋的就会顺顺的4 小时前
hot100——二叉树
java·数据结构·算法·leetcode·力扣