Leetcode--字符串压缩
初始化变量:使用StringBuilder来构建结果字符串,记录当前字符和出现次数。 遍历字符串:逐个字符处理,记录连续出现次数。 处理字符变化:当遇到不同的字符时,处理当前字符块,添加相应的计数数字到结果字符串中。 处理多位数字:当计数超过9时,分解为多位数字并依次添加。 比较长度:最后比较结果字符串和原字符串的长度,返回更短的那个。 初始化:检查字符串为空,直接返回。如果不为空,初始化StringBuilder和变量记录当前字符和计数。 遍历字符串:从第二个字符开始,逐个比较当前字符和记录字符。 处理字符变化:当字符变化时,处理当前字符的计数,将计数分解为多位数字并添加到结果字符串中,然后更新当前字符和计数。 处理多位数字:通过循环处理每一位数字,确保数字正确添加到结果字符串中。 最后处理:处理最后一个字符块,添加到结果字符串中。 比较长度:根据结果字符串和原字符串的长度,决定返回哪一个。
发布日期:2021-04-30 21:00:58
浏览次数:125
分类:精选文章
本文共 1786 字,大约阅读时间需要 5 分钟。
为了实现字符串压缩功能,我们需要遍历字符串,记录每个字符连续出现的次数,并将这些信息压缩到结果字符串中。压缩后的字符串只有在长度更短的情况下才会返回,否则返回原字符串。
方法思路
解决代码
public class Solution { public String compressString(String S) { if (S.length() == 0) { return S; } StringBuilder x = new StringBuilder(); char currentChar = S.charAt(0); int count = 1; int i = 1; int j = 0; while (i < S.length()) { if (S.charAt(i) != currentChar) { // 处理当前字符的count while (count > 0) { int digit = count % 10; x.append(digit + '0'); if (digit != 0) { j++; } count /= 10; } x.append(currentChar); currentChar = S.charAt(i); count = 1; i++; j++; } else { count++; i++; } } // 处理最后一个字符块 while (count > 0) { int digit = count % 10; x.append(digit + '0'); if (digit != 0) { j++; } count /= 10; } x.append(currentChar); // 比较长度 if (x.length() >= S.length()) { return S; } else { return x.toString(); } }} 代码解释
这种方法确保了字符串压缩的正确性和效率,能够处理所有字符以及多位计数的情况。
发表评论
最新留言
路过,博主的博客真漂亮。。
[***.116.15.85]2026年06月11日 20时41分43秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
PinYin4j库的使用
2023-03-02
PIP
2023-03-02
pip install mysqlclient报错
2023-03-02
pip install 出现报asciii码错误的解决
2023-03-02
pip throws TypeError: parse() got an unexpected keyword argument ‘transport_encoding‘ 在尝试安装新软件包时
2023-03-02
pip 下载慢
2023-03-02
pip 安装opencv-python卡死
2023-03-02
pip 安装出现异常
2023-03-02
Pip 安装失败:需要 SSL
2023-03-02
Pip 安装挂起
2023-03-02
pip 或 pip3 为 Python 3 安装包?
2023-03-02
pip 无法从 requirements.txt 安装软件包
2023-03-02
pip/pip3更换国内源
2023-03-02
pip3 install PyQt5 --user 失败
2023-03-02
pip3命令全解析:Python3包管理工具的详细使用指南
2023-03-02