Python递归实现字符串的压缩与解压缩算法
字符串压缩算法:
def compress_str(s): if len(s) == 0: return '' elif len(s) == 1: return s + '1' else: count = 1 compressed_str = '' for i in range(1, len(s)): if s[i] == s[i-1]: count += 1 else: compressed_str += s[i-1] + str(count) count = 1 compressed_str += s[i] + str(count) return compressed_str
这个算法的思想是遍历字符串,如果当前字符与上一个字符相等,计数器加1,如果不相等,则将上一个字符及其出现次数拼接到压缩字符串的末尾。最后一个字符也要拼接上。
例如,对字符串“pidancode.com”进行压缩,返回结果为“p1i1d1a1n1c1o2d1e1.1c1o1m1”。其中“1”代表出现次数。
字符串解压缩算法:
def decompress_str(s): if len(s) == 0: return '' else: decompressed_str = '' i = 0 while i < len(s): c = s[i] count = 0 i += 1 while i < len(s) and s[i].isdigit(): count = count * 10 + int(s[i]) i += 1 decompressed_str += c * count return decompressed_str
这个算法的思想是遍历字符串,如果当前字符是字母,则将其加入解压缩字符串的末尾,如果是数字,则将数字解析出来,并将其前面的字母重复加入解压缩字符串的末尾相应的次数。
例如,对压缩字符串“p1i1d1a1n1c1o2d1e1.1c1o1m1”进行解压缩,返回结果为“pidancode.com”。
相关文章