Python算法练习6.26

news/2024/11/15 0:56:58/

leetcode 443 压缩字符串

给你一个字符数组 chars ,请使用下述算法压缩:

从一个空字符串 s 开始。对于 chars 中的每组 连续重复字符 :

如果这一组长度为 1 ,则将字符追加到 s 中。
否则,需要向 s 追加字符,后跟这一组的长度。
压缩后得到的字符串 s 不应该直接返回 ,需要转储到字符数组 chars 中。需要注意的是,如果组长度为 10 或 10 以上,则在 chars 数组中会被拆分为多个字符。

请在 修改完输入数组后 ,返回该数组的新长度。

你必须设计并实现一个只使用常量额外空间的算法来解决此问题。

输入:chars = ["a","a","b","b","c","c","c"]
输出:返回 6 ,输入数组的前 6 个字符应该是:["a","2","b","2","c","3"]
解释:"aa" 被 "a2" 替代。"bb" 被 "b2" 替代。"ccc" 被 "c3" 替代。

输入:chars = ["a","a","b","b","c","c","c"]
输出:返回 6 ,输入数组的前 6 个字符应该是:["a","2","b","2","c","3"]
解释:"aa" 被 "a2" 替代。"bb" 被 "b2" 替代。"ccc" 被 "c3" 替代。

 很奇怪,为什么力扣的输出是字符数组而不是数字。。

自己写的(13/75):

class Solution(object):def compress(self, chars):charsCopy = charscharsCopy.append("#")chars = []n = len(charsCopy)count = 1for i in range(1, n):if charsCopy[i] == charsCopy[i-1]:count += 1else:chars.append(charsCopy[i-1])if count > 1:temp = []while count > 0:a = count % 10count //= 10temp.append(str(a))temp.reverse()chars = chars + tempcount = 1return len(chars)

 评论区大佬的答案:除了count转换那想的有点麻烦,其余的明明思路一样。。

可能是必须要把chars指向的内存空间改变了才可以吧

class Solution(object):def compress(self, chars):n = len(chars)ans, count = 0, 1for i in range(1, n+1):if i < n and chars[i] == chars[i-1]:count += 1else:chars[ans] = chars[i-1]ans += 1if count > 1:for c in str(count):chars[ans] = cans += 1count = 1return ans

leetcode 283 移动零

给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。

请注意 ,必须在不复制数组的情况下原地对数组进行操作。

输入: nums = [0,1,0,3,12]
输出: [1,3,12,0,0]

 快慢指针,right永远指向未排序侧第一个非0数,left指向未排序侧第一个0

每一次交换都是右边非0与左边的0交换

class Solution(object):def moveZeroes(self, nums):n = len(nums)left, right = 0, 0while right < n:if nums[right] != 0:nums[left], nums[right] = nums[right], nums[left]left += 1right += 1


http://www.ppmy.cn/news/584553.html

相关文章

FPGA解码 4K MIPI 视频自定义IP版 纯vhdl实现 CSI2 RX 采集OV13850 提供工程源码和技术支持

目录 1、前言2、Xilinx官方主推的MIPI解码方案3、本 MIPI CSI2 模块性能及其优越性4、我这里已有的 MIPI 编解码方案5、vivado工程介绍6、上板调试验证7、福利&#xff1a;工程代码的获取 1、前言 FPGA图像采集领域目前协议最复杂、技术难度最高的应该就是MIPI协议了&#xff…

CENTOS上的网络安全工具(二十六)SPARK+NetSA Security Tools容器化部署(2)

〇、抓包与批量转换cap文件 1. Network Monitor 抓包 我们在CENTO OS上的网络安全工具&#xff08;十七&#xff09;搭建Cascade的Docker开发环境中捎带脚介绍了以下windows下的抓包软件。大意就是微软又一款不错的抓包分析软件&#xff0c;名曰nmcap&#xff0c;可在Download …

Canvas基本使用

1.canvas基本使用 1.1.说明&#xff1a; canvas是双标签,h5中新增的属性默认宽高为300*150浏览器默认canvas展示的是一张图片给canvas添加文字内容是没有任何意义的canvas画布&#xff1a;绘制图形&#xff0c;显示一个文字&#xff0c;必须通过js操作 不要通过样式去设置画…

使用华为NAS开共享并上传下载

开局先吐槽&#xff0c;百度真不是个东西&#xff0c;广告一大堆&#xff0c;要找的东西永远藏在后面&#xff0c;恶心&#xff0c;恶心。 但是他喵的百度的东西杂乱无章&#xff0c;对于前面没大腿趟过路并分享过经验的东西&#xff0c;东捡一枝&#xff0c;西拿一叶&#xf…

Python 用openpyxl库从excel表格中获取内容(实例)

从文件中读取第5列含有‘手机’的行&#xff0c;并输出满足条件的第二、五列数据。 import os from openpyxl import load_workbookfull_fn os.path.join(os.path.dirname(os.path.abspath(__file__)), exam.xlsx) wb load_workbook(full_fn) sh wb[Sheet1] rows sh.max_r…

Node.js 2016 回顾以及2017展望(转自 i5ting )

Node.js 2016 回顾 1&#xff09;Node.js版本变化 https://github.com/nodejs/LTS#lts-schedule 发布Node.js 6.x 并进入LTS&#xff08;长期支持版本&#xff09;&#xff0c;凡是LTS的都可以在生成环境使用发布Node.js 7.x 支持Async/await&#xff0c;尽管需要加flag才可以开…

[渝粤教育] 中国传媒大学 计算机组成原理 参考 资料

教育 -计算机组成原理-章节资料考试资料-中国传媒大学【】 练习题 1、【单选题】想在一个高空作业车的控制装置中嵌入自动控制程序,你会从以下几种途径中选择什么方法解决这个问题? A、软件方法 B、程序方法 C、软件工程方法 D、系统建模方法 参考资料【 】 练习题 1、【判断题…

abbyy_abbyy neoml我们如何制作开源机器学习库以及为什么需要它

abbyy The framework provides software developers with powerful deep learning and traditional machine learning algorithms for creating applications that fuel digital transformation. 该框架为软件开发人员提供了强大的深度学习和传统的机器学习算法&#xff0c;可用…