python百题大冲关-压缩字符串

挑战介绍

实现一个算法来压缩一个字符串。压缩的要求如下:

1需要判断压缩能不能节省空间,仅在压缩后字符串比原字符串长度更短时进行压缩。 2压缩的格式是将连续相同字符替换为字符+数字形式,例如 "AAABCCDDDD" 变为 "A3BC2D4"

本次挑战中,你需要在 compress_str.py 文件中补充函数 compress 的空缺部分。

1compress 函数接受一个参数,string 用于指定传入的字符串; 2compress 函数输出一个字符串。

你需要补充 compress 函数,使 compress 函数可以对传入的 string 字符串进行压缩。要求如下:

1判断传入的字符串是否需要进行压缩,如果不需要压缩,返回原字符串; 2如果需要压缩,返回压缩后的字符串; 3如果传入的字符串是 None 或者空字符串,返回 None 或者空字符串。
1class CompressString(object): 2 3 def compress(self, string): 4 if string is None or not string: 5 return string 6 result = '' 7 prev_char = string[0] 8 count = 0 9 for char in string: 10 if char == prev_char: 11 count += 1 12 else: 13 result += self._calc_partial_result(prev_char, count) 14 prev_char = char 15 count = 1 16 result += self._calc_partial_result(prev_char, count) 17 return result if len(result) < len(string) else string 18 19 def _calc_partial_result(self, prev_char, count): 20 return prev_char + (str(count) if count > 1 else '')

string is None or not string 依旧判断是否为空

判断是否需要压缩 先定义一个prev_char赋值string第一个字符 通过循环对比string里的字符 判断char等于string[0]来计数 每一个相等 count+1
当不相等遇到下一个字符时便调用_calc_partial_result函数来返回之前压缩的值 比如aaaaa压缩成a5

下一个字符便重复之前的循环

最后通过对比len(result) < len(string) 压缩后和原字符串的长度来确定是否需要压缩

点赞
收藏

评论区

加载中...

相关推荐

python百题大冲关-反转字符串中的字符

挑战介绍实现一个算法来实现反转字符数组的功能。反转的要求如下:将字符数组的字符进行反转,例如'b','','a','r'变成'r','a','','b'。将字符数组替换为反转后的数组。本次挑战中,你需要在reverse_chars.py文件中补充函数reverse的空缺部分。re

手把手教你用Python实现批量文件的压缩处理

一、前言大家好,我是崔艳飞。接到项目求助,需要对上千个文件夹中的文件进行压缩处理,并要删除源文件,只保留压缩后的压缩文件,数据量大,手动完成耗时耗力,用Python处理再合适不过了。二、项目目标批量对文件夹的内容进行压缩处理,满足客户要求。三、项目准备软件:PyCharm需要的库:os,shutil,zipfile四、项目分析1)如何读取源文

python百题大冲关-确定字符串是否是另一个的排列

挑战介绍实现一个算法来识别一个字符串str2是否是另一个字符串str1的排列。排列的解释如下:如果将str1的字符拆分开,重新排列后再拼接起来,能够得到str2,那么就说字符串str2是字符串str1的排列。本次挑战中,你需要在permutation.py文件中补充函数is_permutation的空缺部分

python百题大冲关-确定字符串是否是另一个的旋转

挑战介绍实现一个算法来识别一个字符串s2是否是另一个字符串s1的旋转。旋转的解释如下:如果将s1从某个位置断开,拆分成两个字符串(可能有一个为空字符串),再将这两个字符串调换顺序后拼接起来,能够得到s2,那么说字符串s2是字符串s1的旋转。本次挑战中,你需要在rotation.py文件中补充函数is_subst

linux常见压缩格式及deb安装包用法

ZIP格式评价:可能是目前使用的最多的文档压缩格式,跨平台。压缩率不高。压缩一个目录:\ziprarchive\_name.zipdirectory\_to\_compress解压缩:\unziparchive\_name.zipTAR格式评价:消耗cpu及时间少,仅仅是一个打包工具,并不负责压缩。

4cast

4castpackageloadcsv.KumarAwanish发布:2020122117:43:04.501348作者:KumarAwanish作者邮箱:awanish00@gmail.com首页: