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

DaLongggggg 等级 679 0 0
标签: Python

挑战介绍

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

需要判断压缩能不能节省空间,仅在压缩后字符串比原字符串长度更短时进行压缩。
压缩的格式是将连续相同字符替换为字符+数字形式,例如 "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百题大冲关-压缩字符串
挑战介绍 实现一个算法来压缩一个字符串。压缩的要求如下: 需要判断压缩能不能节省空间,仅在压缩后字符串比原字符串长度更短时进行压缩。 压缩的格式是将连续相同字符替换为字符数字形式,例如 "AAABCCDDDD" 变为 "A3BC2D4"。 本次挑战中,你需要在 compress_str.py 文件中补充函数 compress 的空缺部分
python百题大冲关-反转字符串中的字符
挑战介绍 实现一个算法来实现反转字符数组的功能。反转的要求如下: 将字符数组的字符进行反转,例如 'b', ' ', 'a', 'r' 变成 'r', 'a', ' ', 'b'。 将字符数组替换为反转后的数组。 本次挑战中,你需要在 reverse_chars.py 文件中补充函数 reverse 的空缺部分。 re
python百题大冲关-Fizz Buzz 经典问题
挑战介绍 给定一个整数 num,从 1 到 num 按照下面的规则返回每个数: 如果这个数被 3 整除,返回 'Fizz'。 如果这个数被 5 整除,返回 'Buzz'。 如果这个数能同时被 3 和 5 整除,返回 'FizzBuzz'。 如果这个数既不能被 3 也不能被 5 整除,返回这个数字的字符串格式。 挑战内容
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,一
12h删除,这波福利请笑纳
为了帮助大家更系统全面的学习python,学习数据分析,我们联合多位老师,耗时数月终于打磨重塑了《数据分析+python学习资料》,并且做出决定,将本资料免费赠予对python和大数据感兴趣的互联网人。 在送出这样一份资料之前,我有些话要说。 2020年很难。是打翻身仗的一年。 距我们发放大数据分析与python资料已满
Flask
Python 现阶段三大主流Web框架 Django Tornado Flask 对比 =========================================== [**百度百科**](https://www.oschina.net/action/GoToLink?url=https%3A%2F%2Fbaike.baidu.com%2Fitem
Linux使用Jython调用JAVA接口
什么是Jython?自己百度. Jython大概就JAVA版的Python, 同样地Python可以理解为C版的. 下面开始以调用SWT为例: 先上jython代码, 文件名为"随便.py": # -*- coding: utf-8 -*- from java.util import Date from org.eclipse
Python 为什么抛弃累赘的花括号,使用缩进来划分代码块?
大家好,这是“Python为什么”系列节目的文字稿(**文末有观看地址**)。 本期话题:Python 为什么使用缩进来划分代码块,而不像其它语言使用花括号 {} 或者 “end” 之类的语法? Python 的缩进是一个老生常谈的话题,经常有人会提及它,比如 Python 之父在上个月就恰好转发过一篇文章: ![](http://ww1.sinaim
Python向来以慢著称,为啥Instagram却唯独钟爱它?
PyCon 是全世界最大的以 Python 编程语言 为主题的技术大会,大会由 Python 社区组织,每年举办一次。在 Python 2017 上,Instagram 的工程师们带来了一个有关 Python 在 Instagram 的主题演讲,同时还分享了 Instagram 如何将整个项目运行环境升级到 Python 3 的故事。本文为该次演讲的内容摘要
Python环境搭建—安利Python小白的Python和Pycharm安装详细教程
人生苦短,我用Python。众所周知,Python目前越来越火,学习Python的小伙伴也越来越多。最近看到群里的小伙伴经常碰到不会安装Python或者不知道去哪下载Python安装包等系列问题,为了方便大家学习Python,小编整理了一套Python和Pycharm安装详细教程,只要大家按照这个步骤来,就可以轻松的搞定Python和Pycharm的安装了。
Python的GUI编程(TK)
TK在大多数 Unix平台、Windows平台和Macintosh系统都是预装好的,TKinter 模块是 Tk GUI 套件的标准Python接口。可实现Python的GUI编程。 Tkinter模块("Tk 接口")是python的标准Tk GUI工具包的接口.Tk和Tkinter可以在大多数的Unix平台下使用,同样可以应用在Windows和Maci