当前位置:网站首页>LeetCode_2632_字符串压缩

LeetCode_2632_字符串压缩

2022-08-09 22:04:00 Fitz1318

题目链接

题目描述

字符串压缩。利用字符重复出现的次数,编写一种方法,实现基本的字符串压缩功能。比如,字符串aabcccccaaa会变为a2b1c5a3。若“压缩”后的字符串没有变短,则返回原先的字符串。你可以假设字符串中只包含大小写英文字母(az)。

示例1:

 输入:"aabcccccaaa"
 输出:"a2b1c5a3"

示例2:

 输入:"abbccd"
 输出:"abbccd"
 解释:"abbccd"压缩后为"a1b2c2d1",比原字符串长度更长。

提示

  • 字符串长度在[0, 50000]范围内。

解题思路

双指针法

  • leftright都初始化为0right指针遍历字符串,直到访问到不同字符时停止,此时right - left便是首个字符的连续出现次数,即可完成首个字符的压缩操作
  • 接下来,从下个字符开始,重复以上操作,直到遍历完成即可

AC代码

class Solution {
    
    public String compressString(String S) {
    
        int left = 0;
        int right = 0;
        StringBuilder ans = new StringBuilder();
        while (left < S.length()) {
    
            while (right < S.length() && S.charAt(left) == S.charAt(right)) {
    
                right++;
            }
            ans.append(S.charAt(left)).append(right - left);
            left = right;
        }
        return ans.length() < S.length() ? ans.toString() : S;
    }
}
原网站

版权声明
本文为[Fitz1318]所创,转载请带上原文链接,感谢
https://blog.csdn.net/Fitz1318/article/details/126254824