3种解法 - 实现字符串压缩
发布日期:2021-05-08 16:54:44 浏览次数:19 分类:精选文章

本文共 847 字,大约阅读时间需要 2 分钟。

字符串压缩方法

为了实现字符串压缩,我们可以遍历字符串,记录每个字符的出现次数,并将结果以“字符计数”的形式拼接起来。如果压缩后的字符串比原字符串短,我们就返回它,否则返回原字符串。

方法思路

  • 初始化变量:首先检查字符串是否为空,如果为空,直接返回。初始化变量tmpChar为第一个字符,count为1。
  • 遍历字符串:从第二个字符开始遍历,比较当前字符和tmpChar
    • 如果相同,增加计数器count
    • 如果不同,将当前tmpCharcount添加到结果列表中,然后更新tmpChar为当前字符,count重置为1。
  • 处理最后一个字符:循环结束后,添加最后一个字符及其计数。
  • 比较长度:将结果字符串与原字符串比较,若更短则返回结果,否则返回原字符串。
  • 代码实现

    def compressString(S):    if not S:        return S    result = []    tmpChar = S[0]    count = 1    for char in S[1:]:        if char == tmpChar:            count += 1        else:            result.append(f"{tmpChar}{count}")            tmpChar = char            count = 1    result.append(f"{tmpChar}{count}")    compressed = ''.join(result)    return compressed if len(compressed) < len(S) else S

    示例测试

    • 示例1:输入“aabcccccaaa”,输出“a2b1c5a3”。
    • 示例2:输入“abbccd”,输出“abbccd”,因为压缩后的长度更长。

    这个方法的时间复杂度为O(n),空间复杂度为O(n),适用于较大字符串。

    上一篇:3种算法 - 查看拼写单词
    下一篇:2种解法 - 将二叉搜索树变平衡

    发表评论

    最新留言

    感谢大佬
    [***.8.128.20]2025年04月22日 07时37分04秒