压缩字符串

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

  • 需要判断压缩能不能节省空间,仅在压缩后字符串比原字符串长度更短时进行压缩。

  • 压缩的格式是将连续相同字符替换为字符+数字形式,例如 "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 函数输出含两个索引的数组,或者 TypeErrorValueError

  • 对于传入的数组 nums,返回总和为 val 的两个值的索引;

  • 如果数组中没有和为目标值的元素,则返回 None

  • 如果传入的数组 nums 或者目标值 valNone,需要使用 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)相关推荐

  1. 笔记合集 爬虫基础系列 临近结束 课件直接合一起 方便自己寻找 有空再整理

    day01 一.爬虫的定义:程序或者脚本--->自动的爬取万维网的数据的程序或者脚本. 二.爬虫可以解决的问题:(1)解决冷启动问题.(2)搜索引擎的根基.---通用爬虫.(3)帮助机器学习建立 ...

  2. pythonista检测内容自动点击_Pythonista中文教程:100行代码实现一款远程键盘

    前言 最近在逛AppStore的时候看到了一个挺有意思的app叫"远程输入法",意在使用电脑上使用键盘给iOS设备进行远程输入.出于好奇就买下来玩了玩,功能确实不错,但是总觉得少了 ...

  3. 多细胞生命进击之路:单细胞为何放弃自由,长成复杂的多细胞?

    来源:集智俱乐部 作者:Veronique Greenwood 译者:赵雨亭 审校:张澳 编辑:邓一雪 导语 人类作为复杂的多细胞生命,似乎理所当然地认为,多细胞生命相对单细胞生命有绝对的优势.但实际 ...

  4. 如何像Python高手(Pythonista)一样编程

    最近在网上看到一篇介绍Pythonic编程的文章:Code Like a Pythonista: Idiomatic Python,其实作者在2006的PyCon会议后就写了这篇文章,写这篇文章的主要 ...

  5. 钉钉这两年:陈航自我迭代 阿里社交进击

    吃着臭豆腐找到第一个用户 用腿跑出产品形态 钉钉这两年:陈航自我迭代 阿里社交进击 人前人后,钉钉的创始人陈航喜欢穿着一身黑色,外界借此揣测他对于自己的形象有着细致的包装和设计."哪有这么复 ...

  6. Java进击框架:Spring(一)

    Java进击框架:Spring(一) 前言 创建Spring项目 Spring IoC容器和Beans介绍 Bean的概述 Spring IoC 配置元数据 实例化Bean 依赖注入 循环依赖 详细配 ...

  7. 《进击吧!Blazor!》系列入门教程 第一章 3.页面制作

    <进击吧!Blazor!>是本人与张善友老师合作的Blazor零基础入门教程视频,此教程能让一个从未接触过Blazor的程序员掌握开发Blazor应用的能力. 视频地址:https://s ...

  8. ipad上pythonista_[Pythonista] iPad 上很酷的 Python 開發環境 – 炎龍老師的 blog

    全功能的 Pythonista Python 是一個簡單.全功能.強大的程式語言, 使用 Python 的人很自然會希望在任何地方都可以寫 Python 程式.一開始可能覺得, 「要是在 iOS 上有 ...

  9. 真香!180页100+题15W+字解析的《Java高级面试指南》,果断收下

    近期有很多朋友在考虑跳槽,"面试造火箭,工作拧螺丝"这话说得十分吻合他们的现状!而说到准准备面试,那是真不容易,趁着空挡我也收集了不少Java高级面试资源! 而这180页100+题 ...

最新文章

  1. html 标签、图像、链接、注释、锚点定位、特殊字符
  2. redis php异步队列,基于workerman的redis-queue实现异步邮件队列
  3. 机房做隔断为什么要用防火玻璃?
  4. Java之强引用、 软引用、 弱引用、虚引用
  5. 面向对象的相关面试题
  6. Spring IOC注解开发
  7. centos安装DHCP服务器
  8. 程序员身体容易出什么毛病..
  9. php中的require(),PHP中include()与require()的区别说明
  10. 准备成立公司开发 app 外卖应用,怎么起步?
  11. jQuery实现点击行(tr)选中某列中CheckBox
  12. 自定义一个可以使用foreach语句进行迭代的类(IEnumerable)
  13. matlab 股票分时图_matlab画股票走势图 急急急!
  14. CSS 小技巧:如何保留 hover 的状态?
  15. 威漫哨兵机器人_曾经秒杀X战警的哨兵机器人,在漫威漫画原著里更让人头疼!...
  16. 【最新】白piao迅雷的下载速度(迅雷11亲测好用)
  17. 上传图片校验图片类型、大小及尺寸
  18. 五一放一天不调休,你能接受吗?
  19. 有钱人的4种思维,掌握一种,就够翻身了
  20. C++ Primer Plus读书笔记

热门文章

  1. OpenCV系列之立体图像的深度图 | 五十二
  2. spring data jdbc 基本使用
  3. 400和422对数据POST的响应
  4. TCP状态转换图——简述11个状态
  5. 剑未佩妥,出门已是江湖!聊聊2019学习和工作
  6. 适合开车听的歌 开车必听歌曲排行榜 适合年轻人开车听的歌
  7. 首页白屏解决与优化方案
  8. mixer_path.xml 研究
  9. 政府的工作流千变万化怎么办(2)
  10. 北京林业大学计算机网络期末考试,北京林业大学2006《计算机网络》考试大纲...