【python】游程编码?

作者: 阿牛02 | 来源:发表于2019-07-26 08:30 被阅读0次

题目:字符串“aaaabcccaa”,编码后位变为“4a1b3c2a”。解码则是“3e4f2e”,解码后位”eeefffee“

分析:基本思路是遍历字符串,然后统计字符出现的次数,再把出现的次数和字符组合在一起。代码不难,但是容易再边界条件上出错。无论是编码还是解码,算法都需要把字符串中的每个字符遍历一次,如果字符串的长度为n,那么算法的时间复杂度为O(n),在编码和解码过程中,代码需要分配一个数组来容纳编码或解码后的字符串,一次空间复杂度为O(n).

code

(1)

def RLEncode(s):

    encodeStr = []

    last = s[0]

    count = 0

    for i in range(len(s)):

        # 遍历每个字符,统计它连续出现的次数

        if s[i] == last:

            count += 1

        else:

            encodeStr.append(str(count))

            encodeStr.append(last)

            count = 1

            last = s[i]

    # 统计最后一个字符及其出现次数,这是容易忽略的边界条件

    encodeStr.append(str(count))

    encodeStr.append(last)

    return ''.join(encodeStr)

if __name__ == "__main__":

    s = 'aaabcccaa'

    print(RLEncode(s))

(2)解码。

def RLEDecode(s):

    decodeStr = []

    i = 0

    digitCount = 0

    while i < len(s):

        # 统计数字字符的个数,它们表示后面字符要出现的次数

        if s[i].isdigit() is True:

            digitCount += 1

            i += 1

        else:

            # 把把数字字符转换为数字

            count = int(s[i - digitCount:i])

            c = s[i]

            # 根据次数添加字符

            for j in range(count):

                decodeStr.append(c)

            i += 1

            digitCount = 0

    return ''.join(decodeStr)

if __name__ == "__main__":

    s = "11a1b3c2a"

    print(RLEDecode(s))

相关文章

  • 【python】游程编码?

    题目:字符串“aaaabcccaa”,编码后位变为“4a1b3c2a”。解码则是“3e4f2e”,解码后位”eee...

  • 游程编码

    游程编码 概述游程编码又称“运行长度编码”或“行程长度编码”,RLE(Run- Length Encoding 行...

  • Task 1

    RLE编码 RLE全称(run-length encoding),翻译为游程编码[https://baike.ba...

  • python编码

    python编码 python编码简介 字符串在Python内部的表示是unicode编码,因此,在做编码转换时,...

  • Python——文件编码

    编码的演变 Python编码 python2 Python指定编码 在文件头部增加 -*-coding:utf8-...

  • 转自 segmentfault<python编码的意义&g

    原文见python编码的意义,感谢jiminhuang大神 编码,还是编码 python2的直钩——编码异常 当你...

  • Python2.x的中文显示方法

    Python的默认编码 Python在安装时,默认的编码是ascii,当程序中出现非ascii编码时,Python...

  • Python优秀博客笔记汇总(持续更新)

    还在烦编码问题? Python 编码错误的本质原因 Python 编码为什么那么蛋疼? Python3 是如何解决...

  • LeetCode第101场周赛题解

    900. RLE 迭代器 题目难度Medium 编写一个遍历游程编码序列的迭代器。 迭代器由 RLEIterato...

  • python 编码问题总结记录

    Python2的默认编码ASCII,这是python编码问题的根本原因,可以想象,python3的编码问题肯定没有...

网友评论

    本文标题:【python】游程编码?

    本文链接:https://www.haomeiwen.com/subject/herqrctx.html