Leetcode 面试题 01.06. 字符串压缩

文章目录

  • 问题描述
  • 解题报告
  • 实现代码

问题描述

字符串压缩。利用字符重复出现的次数,编写一种算法,实现基本的字符串压缩功能。比如,字符串 a a b c c c c c a a a aabcccccaaa aabcccccaaa 会变为 a 2 b 1 c 5 a 3 a2b1c5a3 a2b1c5a3。若“压缩”后的字符串没有变短,则返回原先的自妇产。你可以假设字符串中质保函大小写字母。
输 入 输入
a a b c c c c c a a a aabcccccaaa aabcccccaaa
输 出 输出
a 2 b 1 c 5 a 3 a2b1c5a3 a2b1c5a3

解题报告

直接遍历整个字符串。
时间复杂度为: O ( n ) O(n) O(n)
空间复杂度为: O ( 1 ) O(1) O(1),只需要常数空间

实现代码

class Solution {
public:
    string compressString(string S) {
        int n=S.size();
        if(n==0){
            return "";
        }
        string ans="";
        int counter=1,i;
        char temp;
        for(int i=0;i<n-1;i++){
            ans.push_back(S[i]);
            counter=1;
            temp=S[i];
            while(S[i+1]==temp){
                counter++;
                i++;
            }
            ans+=to_string(counter);
        }
        if(S[n-1]!=S[n-2]){
            ans.push_back(S[n-1]);
            ans.push_back(1+'0');
        }
        return ans.size()>=S.size()?S:ans;
    }
};

你可能感兴趣的:(leetcode)