1. FlyPython首页
  2. 数据结构与算法
  3. leetcode题解

「LeetCode每日一题」——LCCI. 01.06 字符串压缩

LCCI. 01.06 字符串压缩

链接:https://leetcode-cn.com/problems/compress-string-lcci/
难度:简单

题目

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

示例1:

输入:"aabcccccaaa"
输出:"a2b1c5a3"
示例2:

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

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

思路

我们按照题意就是相同的字符计数,这题我们只扫描一遍,计数然后就可以把字符串拼凑出来。

方案代码

解法:

class Solution:
    def compressString(self, S: str) -> str:
        a = ""
        current=None
        c = 0
        for i in range(len(S)):
            if not current:
                current = S[i]
                c += 1
                a += current
            elif current == S[i]:
                c += 1
            elif current != S[i]:
                a += str(c)
                current = None
                c = 0
                current = S[i]
                c += 1
                a += current
        a += str(c)

        if len(a) >= len(S):
            return S
        else:
            return  a

原创文章,作者:flypython,如若转载,请注明出处:http://flypython.com/algorithm/leetcode/231.html