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

DaLongggggg 等级 309 0 0

挑战介绍

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

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

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

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

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

判断传入的字符串是否需要进行压缩,如果不需要压缩,返回原字符串;
如果需要压缩,返回压缩后的字符串;
如果传入的字符串是 None 或者空字符串,返回 None 或者空字符串。
class CompressString(object):

    def compress(self, string):
        if string is None or not string:
            return string
        result = ''
        prev_char = string[0]
        count = 0
        for char in string:
            if char == prev_char:
                count += 1
            else:
                result += self._calc_partial_result(prev_char, count)
                prev_char = char
                count = 1
        result += self._calc_partial_result(prev_char, count)
        return result if len(result) < len(string) else string

    def _calc_partial_result(self, prev_char, count):
        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小应用 百度接口实现图片文字识别,并打包成安装包软件
本文给大家分享的主题是用百度的接口实现图片的文字识别。 1.环境和配置要求 整体是用Python实现,所需要使用的第三方库包括aip、PIL、keyboard、pyinstaller,如未安装,可在CMD中使用pip install BaiduAIP/pillow/keyboard/pyinstaller指令安装。 百度接口 打开https://
python百题大冲关-确定字符串是否包含唯一字符
本次挑战中,你需要在 unique_chars.py 文件中补充函数 has_unique_chars 的空缺部分。 has_unique_chars 函数接受一个参数,string 用于指定传入的字符串; has_unique_chars 函数输出一个布尔值,即 True 或者 False。 你需要补充 has_unique_chars 函数,使其可以识
python百题大冲关-确定字符串是否是另一个的排列
挑战介绍 实现一个算法来识别一个字符串 str2 是否是另一个字符串 str1 的排列。排列的解释如下: 如果将 str1 的字符拆分开,重新排列后再拼接起来,能够得到 str2 ,那么就说字符串 str2 是字符串 str1 的排列。 本次挑战中,你需要在 permutation.py 文件中补充函数 is_permutation 的空缺部分
python百题大冲关-确定字符串是否是另一个的旋转
挑战介绍 实现一个算法来识别一个字符串 s2 是否是另一个字符串 s1 的旋转。旋转的解释如下: 如果将 s1 从某个位置断开,拆分成两个字符串(可能有一个为空字符串),再将这两个字符串调换顺序后拼接起来,能够得到 s2 ,那么说字符串 s2 是字符串 s1 的旋转。 本次挑战中,你需要在 rotation.py 文件中补充函数 is_subst
python百题大冲关-压缩字符串
挑战介绍 实现一个算法来压缩一个字符串。压缩的要求如下: 需要判断压缩能不能节省空间,仅在压缩后字符串比原字符串长度更短时进行压缩。 压缩的格式是将连续相同字符替换为字符数字形式,例如 "AAABCCDDDD" 变为 "A3BC2D4"。 本次挑战中,你需要在 compress_str.py 文件中补充函数 compress 的空缺部分
python百题大冲关-反转字符串中的字符
挑战介绍 实现一个算法来实现反转字符数组的功能。反转的要求如下: 将字符数组的字符进行反转,例如 'b', ' ', 'a', 'r' 变成 'r', 'a', ' ', 'b'。 将字符数组替换为反转后的数组。 本次挑战中,你需要在 reverse_chars.py 文件中补充函数 reverse 的空缺部分。 re
python百题大冲关-找到给定字符串中的不同字符
请大佬指正纠错!!!! 挑战介绍 在不考虑字符排列的条件下,对于相差只有一个字符的两个字符串,实现一个算法来识别相差的那个字符。要求如下: 当传入的字符串为 'aad' 和 'ad' 时,结果为 'a'。 当传入的字符串为 'aaabccdd' 和 'abdcacade' 时,结果为 'e' 本次挑战中,你需要在 diff.py 文件
python百题大冲关-查找两个总和为特定值的索引
本次挑战中,你需要在 sum.py 文件中补充函数 two_sum 的空缺部分。 two_sum 函数接受两个参数,nums 用于指定传入的数组,val 用于指定和的值; two_sum 函数输出含两个索引的数组,或者 TypeError、 ValueError。 你需要补充 two_sum 函数,使 two_sum 函数可以找到数组 n
python百题大冲关-Fizz Buzz 经典问题
挑战介绍 给定一个整数 num,从 1 到 num 按照下面的规则返回每个数: 如果这个数被 3 整除,返回 'Fizz'。 如果这个数被 5 整除,返回 'Buzz'。 如果这个数能同时被 3 和 5 整除,返回 'FizzBuzz'。 如果这个数既不能被 3 也不能被 5 整除,返回这个数字的字符串格式。 挑战内容
python刷题-最大最小公倍数
问题描述已知一个正整数N,问从1~N中任选出三个数,他们的最小公倍数最大可以为多少。 输入格式输入一个正整数N。 输出格式输出一个整数,表示你找到的最小公倍数。 样例输入9 样例输出504 数据规模与约定1 < N < 106。 N int(input())Min 1if N<2: print(N)elif N%2
BaiduSpider:一个爬取百度的利器
BaiduSpider是一款基于Python的百度搜索结果爬虫,支持多种搜索结果。这篇文章将从多个方面介绍BaiduSpider。 什么是BaiduSpider?BaiduSpider是一款强大但轻量的百度搜索结果提取器,基于BeautifulSoup4和requests。它支持多种搜索结果,包括百度网页搜索,百度图片搜索,百度知道搜索,百度视频搜索,百度资
浅析常用的Python Web的几大框架
在各种语言平台中,python涌现的web框架恐怕是最多的,是一个百花齐放的世界,各种microframework、framework不可胜数;猜想原因应该是在python中构造框架十分简单,使得轮子不断被发明。所 以在Python社区总有关于Python框架孰优孰劣的话题。下面就给大家介绍一下python的几大框架: Django Django 应该是最出
盘点一款Python二级考试模拟软件,带你轻松过关二级Python考试
大家好,我是Python进阶者。今天给大家讲的这个软件,主要是想让大家通过这个软件能将自己的Python基础进一步提高。一、前言相信有些小伙伴学习Python有一段时日,但是又不知道自己的Python基础学的如何,这个时候就需要一款神器来检测一下自己的Python基础了。要想检测自己的Python功力最直观的方法当然是做题了,至于做什么题了我们就不得而知了,
手把手教你4种方法用Python批量实现多Excel多Sheet合并
一、前言大家好,我是崔艳飞。前两天给大家分享了Python自动化文章:,而后在Python进阶交流群里边有读者遇到一个问题,他有很多个Excel表格,他需要对这些Excel文件进行合并。诚然,一个一个打开复制粘贴固然可行,但是该方法费时费力,还容易出错,几个文件还可以手动处理,要是几十个甚至上百个,你就抓瞎了,不过这问题对Python来说,so easy,一
手把手教你用Python爬取百度搜索结果并保存
一、前言大家好,我是崔艳飞。众所周知,百度上直接搜索关键字会出来一大堆东西,时常还会伴随有广告出现,不小心就点进去了,还得花时间退出来,有些费劲。最近群里有个小伙伴提出一个需求,需要获取百度上关于粮食的相关讲话文章标题和链接。正好小编最近在学习爬虫,就想着拿这个需求来练练手。我们都知道,对Python来说,有大量可用的库,实现起来并不难,动手吧。 二、项目