题目

示例1:

  1. 输入:"aabcccccaaa"
  2. 输出:"a2b1c5a3"

示例2:

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

答案

class Solution:
    def compressString(self, S: str) -> str:
        if not S:
            return ""
        ch = S[0]
        ans = ''
        cnt = 0
        for c in S:
            if c == ch:
                cnt += 1
            else:
                ans += ch + str(cnt)
                ch = c
                cnt = 1
        ans += ch + str(cnt)
        return ans if len(ans) < len(S) else S

Note

ans += ch + str(cnt)
加上当前的字母和统计的数字,再重置cnt