嬡.暀苝漂 发表于 2021-9-2 13:07:03

字符串“aabcccccaaa”压缩成“a2b1c5a3“还要返回更

标题信息

解题方法 :双指针遍历
创建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){
            returnS;
      }
       StringBuilderans=new StringBuilder();
       charch=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. 左旋转字符串的三种解法一起看看吧!!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: 字符串“aabcccccaaa”压缩成“a2b1c5a3“还要返回更