当前位置:网站首页>LeetCode刷题|38外观数组
LeetCode刷题|38外观数组
2022-04-23 05:58:00 【杜小瑞】
做了半天的一道题一看竟然是一道简单题。。
题目描述
地址:外观数组
题目意思很好理解,就是一个递归的过程,从‘1’开始,对每一个输入字符串做一个几个几这样格式的描述,然后再把这个描述作为下一次的输入,直到求出第n项的结果。
解法一
这题是一个比较明显的递归题目,但是由于我递归学的不好,所以就考虑如何不使用递归直接做出来。那么简单说一下我的想法。我的做法就是先写一个将输入字符串进行划分并描述的函数,然后反复调用这个函数就可以了。所以这种方法的重点在于如何写字符串划分并描述的函数。
class Solution:
def countAndSay(self, n: int) -> str:
if n ==1:
return '1'
res = self.countandsay('1')
for i in range(2,n):
t = self.countandsay(res)
res = t
return res
def countandsay(self, s: str) -> str:
res = []
count = 1
pres = s[0]
i, n = 1, len(s)
if n == 1:
res.append('1')
res.append(str(s[0]))
return ''.join(res)
while i < n:
if pres == s[i]:
count = count + 1
i = i+1
else:
res.append(str(count))
res.append(str(pres))
pres = s[i]
count = 0
if count > 0:
res.append(str(count))
res.append(str(s[n-1]))
return "".join(res)
求字符串的描述直接对字符串遍历,比较每一个字符跟前一个字符是否相同并计数,然后在数组中保存每一次遍历到的字符以及出现的次数,最后将数组转化为字符串返回。
递归+双指针
来自评论区的方法,感觉这才是这题要考的东西。
class Solution:
def countAndSay(self, n: int) -> str:
if n == 1:
return '1'
s = self.countAndSay(n - 1)
ans = ''
start, end = 0, 0
while end < len(s):
while end < len(s) and s[start] == s[end]:
end += 1
ans += str(end - start) + s[start]
start = end
return ans
作者:喜欢叶梓的汪
链接:https://leetcode-cn.com/leetbook/read/top-interview-questions-easy/xnpvdm/?discussion=sKH5WT
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
递归还是需要好好学一下
版权声明
本文为[杜小瑞]所创,转载请带上原文链接,感谢
https://blog.csdn.net/DXRfighting/article/details/116890778
边栏推荐
- New type of dark energy could solve Universe expansion mystery
- js中entries(),keys(),values() , some(), Object.assign()遍历数组用法
- 阅读笔记:Meta Matrix Factorization for Federated Rating Predictions
- file_ get_ Two solutions to content accessing SSL errors
- 端口占用1
- 【代码解析(5)】Communication-Efficient Learning of Deep Networks from Decentralized Data
- Add serial number to El table
- WebAPI+Form表单上传文件
- 【代码解析(1)】Communication-Efficient Learning of Deep Networks from Decentralized Data
- 微信小程序
猜你喜欢
随机推荐
.NET Standard详解
js更改全部变量失败后改成return方法,终于解决解决问题
TP5 error reporting variable type error: array solution
不用登录直接下载PNG图标的一个网站
mysql中sum (if)_mysql 中sum (if())
freeCodeCamp----arithmetic_arranger练习
Multi cycle verification of El form
【代码解析(6)】Communication-Efficient Learning of Deep Networks from Decentralized Data
ES6规范详解
Jenkins搭建与使用
2021-09-18
压力测试工具 Jmeter
条形码与二维码的生成
Get DOM element location information by offset and client
【代码解析(2)】Communication-Efficient Learning of Deep Networks from Decentralized Data
时间格式不对,运行sql文件报错
.Net Core 下使用 Quartz —— 【6】作业和触发器之触发器的日历
JS实现网页轮播图
批量修改/批量更新数据库某一个字段的值
Unix期末考试总结--针对直系