当前位置: 首页 > news >正文

python数列求和1+11+111前n项_Leetcode Python算法(11)-----外观数列

原题重现:day011

这题目是相当的绕口,其实我是不会做的,所以参考了一下大神的答案。

class Solution:

def countAndSay(self, n: int) -> str:

prev_person = '1'

for i in range(1, n):   #要处理的层数

next_person = ''

num = prev_person[0]

count = 1

for j in range(1, len(prev_person)):

if prev_person[j] == num:    #j在num后一个查找

count += 1

else:

next_person += str(count) + num

count = 1

num = prev_person[j]

next_person += str(count) + num

prev_person = next_person

return prev_person

该代码在我看来就是还原了题目说明的流程。从第一个字符串“1”开始,被比较的数字num从pre_peerson第一个开始,第二个和第一个比较以此类推。如果重复就计数器加一,如果不相等的话就添加到字符串当中,同时计数器重置为1,num顺移到下一个。最后加上最后一个字符串和它的计数值。

之后又学习了第二个版本的解题思路,用的是递归的思想。

class Solution:

def countAndSay(self, n: int) -> str:

if n <= 1:

return '1'

pre = self.countAndSay(n - 1)

for idx in range(len(pre)):

if idx == 0:   #准备工作

count = 1

res = ''

elif pre[idx] != pre[idx -1]:  #后一个值不等于前面那个

res += str(count) + pre[idx-1]

count = 1

elif pre[idx] == pre[idx-1]:

count += 1

if idx == len(pre) - 1:   #加上最后一个数字的数目和它本身

res += str(count) + pre[idx]

return res

这里的思路也很清晰,基条件是当n< = 1 时返回值为1,之后不断地往上垒。比较需要注意的是idx等于0和等于idx等于最后一个的时候需要单独处理。

打卡day011

相关文章:

  • TFS(Team Foundation Server)介绍和入门
  • mac svn工具_SmartSVN 12 for Mac(SVN客户端)
  • SharePoint Web Service系列:进行列表的增删改
  • python蜂窝状六边形_画多层六边形(小区),蜂窝状,matlab
  • SharePoint Web Service系列: Add或Update类型为User的项
  • 哲学家就餐问题python_Python实现哲学家就餐问题实例代码
  • SharePoint Web Service系列:获取文档的属性信息
  • 如何设置两个textview 的内容在listview同一行里_西门子触摸屏如何与S7-1200/1500的PLC-SIM离线仿真
  • SharePoint Web Service系列:编写自定义SharePoint Web Services之一
  • 无线鼠标可以强制配对_一款简单的小设备,吉选gesobyte无线鼠标
  • oracle sql查询时间_「Burpsuite练兵场」SQL注入及相关实验(二)
  • SharePoint Web Service系列:编写自定义SharePoint Web Services之二
  • python2clock_Python3 time clock()方法
  • SharePoint Web Service系列: Add或Update其他各种类型的项
  • mysql 视图_mysql中常见的视图操作,你理解了吗?
  • JS中 map, filter, some, every, forEach, for in, for of 用法总结
  • 《Javascript高级程序设计 (第三版)》第五章 引用类型
  • 【347天】每日项目总结系列085(2018.01.18)
  • golang 发送GET和POST示例
  • LeetCode刷题——29. Divide Two Integers(Part 1靠自己)
  • Python 使用 Tornado 框架实现 WebHook 自动部署 Git 项目
  • 多线程 start 和 run 方法到底有什么区别?
  • 分享几个不错的工具
  • 工程优化暨babel升级小记
  • 基于MaxCompute打造轻盈的人人车移动端数据平台
  • 解析带emoji和链接的聊天系统消息
  • 小试R空间处理新库sf
  • CMake 入门1/5:基于阿里云 ECS搭建体验环境
  • 关于Android全面屏虚拟导航栏的适配总结
  • ​ 无限可能性的探索:Amazon Lightsail轻量应用服务器引领数字化时代创新发展
  • # Swust 12th acm 邀请赛# [ A ] A+B problem [题解]
  • #pragma预处理命令
  • (06)金属布线——为半导体注入生命的连接
  • (175)FPGA门控时钟技术
  • (4) PIVOT 和 UPIVOT 的使用
  • (4)STL算法之比较
  • (ISPRS,2023)深度语义-视觉对齐用于zero-shot遥感图像场景分类
  • (草履虫都可以看懂的)PyQt子窗口向主窗口传递参数,主窗口接收子窗口信号、参数。
  • (附源码)计算机毕业设计ssm本地美食推荐平台
  • (附源码)计算机毕业设计SSM疫情居家隔离服务系统
  • (规划)24届春招和25届暑假实习路线准备规划
  • (深入.Net平台的软件系统分层开发).第一章.上机练习.20170424
  • (一)ClickHouse 中的 `MaterializedMySQL` 数据库引擎的使用方法、设置、特性和限制。
  • (转)视频码率,帧率和分辨率的联系与区别
  • (转载)在C#用WM_COPYDATA消息来实现两个进程之间传递数据
  • ../depcomp: line 571: exec: g++: not found
  • .[hudsonL@cock.li].mkp勒索加密数据库完美恢复---惜分飞
  • .desktop 桌面快捷_Linux桌面环境那么多,这几款优秀的任你选
  • .NET DevOps 接入指南 | 1. GitLab 安装
  • .NET Reactor简单使用教程
  • .net 程序 换成 java,NET程序员如何转行为J2EE之java基础上(9)
  • .NET 设计模式—简单工厂(Simple Factory Pattern)
  • .NET/C# 解压 Zip 文件时出现异常:System.IO.InvalidDataException: 找不到中央目录结尾记录。
  • .NET/C# 使用反射调用含 ref 或 out 参数的方法
  • .Net小白的大学四年,内含面经