字符串“aabcccccaaa”压缩成“a2b1c5a3“还要返回更小的?力扣面试题 01.06. 字符串压缩讲解

题目信息

在这里插入图片描述
解题方法双指针遍历

创建ch,让它获取S的第一个字符,定义计数器count初始化为1,接下来让ch和S的下一个字符比较,如果他们相等,count+1,不想等的话,创建一个StringBuilder的实例对象ans,让ans使用append方法,拼接当前的ch,再拼接它的count,让把当前的字符赋给ch,计数器归1,继续进行循环。循环结束后把最后的ch和他的count添加到ans里。返回ans和S.length的较小值。

代码实现

class Solution {
    public String compressString(String S) {
        if(S.length()==0){
            return  S;
        }
       StringBuilder  ans=new StringBuilder();
       char  ch=S.charAt(0);
       int count=1;
        for (int i = 1; i <S.length() ; i++) {
            if(ch==S.charAt(i)){
                count++;
            }
          else {
                ans.append(ch);
                ans.append(count);
                   ch=S.charAt(i);
          count=1;
            }
       
        }
                 ans.append(ch);
                ans.append(count);
        return ans.length() >=S.length() ? S: ans.toString();
        
    }   
    }

如果觉得不错的话,可以看看我的其他题解
怎么把i am a student逆置成student a am i?面试题逆置字符串讲解

三种方法任君挑选 LeetCode_136只出现一次的数字

什么?动态规划10行求出连续子数组的最大和 剑指offer-42讲解

剑指 Offer 39. 数组中出现次数超过一半的数字 简单易懂14行搞定 。人人皆可会

二叉树的层序遍历原理+LeetCode真题练习

LeetCode 24:两两交换链表中的节点,1662. 检查两个字符串数组是否相等

LeetCode 第二十一题

剑指 Offer 58 - II. 左旋转字符串的三种解法一起看看吧!!

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

见闻色霸气~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值