进击吧!Pythonista(6/100)
压缩字符串
实现一个算法来压缩一个字符串。压缩的要求如下:
需要判断压缩能不能节省空间,仅在压缩后字符串比原字符串长度更短时进行压缩。
压缩的格式是将连续相同字符替换为字符+数字形式,例如
"AAABCCDDDD"
变为"A3BC2D4"
。判断传入的字符串是否需要进行压缩,如果不需要压缩,返回原字符串;
如果需要压缩,返回压缩后的字符串;
如果传入的字符串是
None
或者空字符串,返回None
或者空字符串。
class CompressString(object):def __init__(self, str1):self.str1 = str1def compress(self):if self.str1 is None or not self.str1:return self.str1result = ''prev_char = self.str1[0]count = 0for char in self.str1:if char == prev_char:count += 1else:result += self._calc_partial_result(prev_char, count)prev_char = charcount = 1result += self._calc_partial_result(prev_char, count)return result if len(result) < len(self.str1) else self.str1def _calc_partial_result(self, prev_char, count):return prev_char + (str(count) if count > 1 else '')if __name__ == '__main__':aaa = CompressString("AAABCCDDDD")print(aaa.compress())
反转字符串中的字符
实现一个算法来实现反转字符数组的功能。反转的要求如下:
将字符数组的字符进行反转,例如
['b', ' ', 'a', 'r']
变成['r', 'a', ' ', 'b']
。将字符数组替换为反转后的数组。
对于传入的字符数组,将字符数组的字符进行反转和替换,并返回替换后的字符数组;
如果传入的字符数组是
None
或者空字符数组,返回None
或者空字符数组。
class ReverseString(object):def __init__(self, chars):self.chars = charsdef reverse(self):if self.chars:size = len(self.chars)for i in range(size // 2):self.chars[i], self.chars[size - 1 - i] = \self.chars[size - 1 - i], self.chars[i]return self.charsif __name__ == '__main__':aaa = ReverseString(['b', ' ', 'a', 'r'])print(aaa.reverse())
查找两个总和为特定值的索引
给定一个数组,找到两个总和为特定值的索引。
例如给定数组
[1, 2, 3, -2, 5, 7]
,给定总和7
,则返回索引[1, 4]
。two_sum
函数接受两个参数,nums
用于指定传入的数组,val
用于指定和的值;two_sum
函数输出含两个索引的数组,或者TypeError
、ValueError
。对于传入的数组
nums
,返回总和为val
的两个值的索引;如果数组中没有和为目标值的元素,则返回
None
。如果传入的数组
nums
或者目标值val
为None
,需要使用raise
语句显示TypeError
。如果传入的数组为空数组,需要使用
raise
语句显示ValueError
。
class Solution(object):def __init__(self, nums, val):self.nums = numsself.val = valdef two_sum(self):if self.nums is None or self.val is None:raise TypeError('nums or target cannot be None')if not self.nums:raise ValueError('nums cannot be empty')cache = {}for index, num in enumerate(self.nums):cache_val = self.val - numif num in cache:return [cache[num], index]else:cache[cache_val] = indexreturn Noneif __name__ == '__main__':aaa = Solution([1, 2, 3, -2, 5, 7], 7)print(aaa.two_sum())
记得先自己做一遍再看答案哦~
Love&Share
[ 完 ]
进击吧!Pythonista(6/100)相关推荐
- 笔记合集 爬虫基础系列 临近结束 课件直接合一起 方便自己寻找 有空再整理
day01 一.爬虫的定义:程序或者脚本--->自动的爬取万维网的数据的程序或者脚本. 二.爬虫可以解决的问题:(1)解决冷启动问题.(2)搜索引擎的根基.---通用爬虫.(3)帮助机器学习建立 ...
- pythonista检测内容自动点击_Pythonista中文教程:100行代码实现一款远程键盘
前言 最近在逛AppStore的时候看到了一个挺有意思的app叫"远程输入法",意在使用电脑上使用键盘给iOS设备进行远程输入.出于好奇就买下来玩了玩,功能确实不错,但是总觉得少了 ...
- 多细胞生命进击之路:单细胞为何放弃自由,长成复杂的多细胞?
来源:集智俱乐部 作者:Veronique Greenwood 译者:赵雨亭 审校:张澳 编辑:邓一雪 导语 人类作为复杂的多细胞生命,似乎理所当然地认为,多细胞生命相对单细胞生命有绝对的优势.但实际 ...
- 如何像Python高手(Pythonista)一样编程
最近在网上看到一篇介绍Pythonic编程的文章:Code Like a Pythonista: Idiomatic Python,其实作者在2006的PyCon会议后就写了这篇文章,写这篇文章的主要 ...
- 钉钉这两年:陈航自我迭代 阿里社交进击
吃着臭豆腐找到第一个用户 用腿跑出产品形态 钉钉这两年:陈航自我迭代 阿里社交进击 人前人后,钉钉的创始人陈航喜欢穿着一身黑色,外界借此揣测他对于自己的形象有着细致的包装和设计."哪有这么复 ...
- Java进击框架:Spring(一)
Java进击框架:Spring(一) 前言 创建Spring项目 Spring IoC容器和Beans介绍 Bean的概述 Spring IoC 配置元数据 实例化Bean 依赖注入 循环依赖 详细配 ...
- 《进击吧!Blazor!》系列入门教程 第一章 3.页面制作
<进击吧!Blazor!>是本人与张善友老师合作的Blazor零基础入门教程视频,此教程能让一个从未接触过Blazor的程序员掌握开发Blazor应用的能力. 视频地址:https://s ...
- ipad上pythonista_[Pythonista] iPad 上很酷的 Python 開發環境 – 炎龍老師的 blog
全功能的 Pythonista Python 是一個簡單.全功能.強大的程式語言, 使用 Python 的人很自然會希望在任何地方都可以寫 Python 程式.一開始可能覺得, 「要是在 iOS 上有 ...
- 真香!180页100+题15W+字解析的《Java高级面试指南》,果断收下
近期有很多朋友在考虑跳槽,"面试造火箭,工作拧螺丝"这话说得十分吻合他们的现状!而说到准准备面试,那是真不容易,趁着空挡我也收集了不少Java高级面试资源! 而这180页100+题 ...
最新文章
- html 标签、图像、链接、注释、锚点定位、特殊字符
- redis php异步队列,基于workerman的redis-queue实现异步邮件队列
- 机房做隔断为什么要用防火玻璃?
- Java之强引用、 软引用、 弱引用、虚引用
- 面向对象的相关面试题
- Spring IOC注解开发
- centos安装DHCP服务器
- 程序员身体容易出什么毛病..
- php中的require(),PHP中include()与require()的区别说明
- 准备成立公司开发 app 外卖应用,怎么起步?
- jQuery实现点击行(tr)选中某列中CheckBox
- 自定义一个可以使用foreach语句进行迭代的类(IEnumerable)
- matlab 股票分时图_matlab画股票走势图 急急急!
- CSS 小技巧:如何保留 hover 的状态?
- 威漫哨兵机器人_曾经秒杀X战警的哨兵机器人,在漫威漫画原著里更让人头疼!...
- 【最新】白piao迅雷的下载速度(迅雷11亲测好用)
- 上传图片校验图片类型、大小及尺寸
- 五一放一天不调休,你能接受吗?
- 有钱人的4种思维,掌握一种,就够翻身了
- C++ Primer Plus读书笔记