Leetcode38. 外观数列

class Solution:
    def countAndSay(self, n: int) -> str:
        #第一个为"1"
        prev ="1"

        #第一个prev已经得到,所以我们只需再循环n-1次即可,而不是range(n)
        for i in range(n-1):
            curr = ''
            pos = 0
            start = 0
            #len(prev)为上一个字符串
            while pos < len(prev):
                #pos从上一个字符串的0开始遍历
                while pos < len(prev) and prev[pos] == prev[start]:
                    #当读取到相同的时,pos后移一位
                    #此时start的位置为相同的第一个元素
                    pos += 1
                #当不再相同时,此时pos要指向不相同的第一个元素
                #此时,读取结果(两位数字)
                curr += str(pos-start) + prev[start]

                #此时要更新start,继续进入判断是否相同的循环
                start = pos
            
            #外层while循环遍历完时,上一个prev已经遍历完成
            #此时更新prev,进入下一次for循环
            prev = curr
        return prev

"""
使用start和pos来寻找相同的元素,以两者之差当作,相同元素的个数
"""
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值