其他分享
首页 > 其他分享> > leetcode(力扣) 38. 外观数列 (过程模拟)

leetcode(力扣) 38. 外观数列 (过程模拟)

作者:互联网

题目在这:https://leetcode-cn.com/problems/count-and-say/

题目分析:

题目说的很乱,我这里简洁的描述一下。

这样说应该明白了吧~~~~

思路分析:

整体思路其实看上面的例子的时候已经出来了。就是无脑循环,每次循环数上一次循环得到的数,设置一个计数器time 初始值为1,如果当前遍历数字和前一个数字不一样,则就是 str(time + 前一个数字) 加入到结果集,然后继续遍历即可。

比如在求第五个数的时候,遍历第四个数,1211 。

完整代码:

class Solution:
    def countAndSay(self, n: int) -> str:
        if n == 1:
            return '1'
        if n ==2 :
            return '11'
        time = 1 # 用于当前计数
        temp = '11'
        res = ''
        for _ in range(n-2):
            for i in range(0,len(temp)):
                if i == len(temp) -1:
                    if  temp[i] == temp[i-1]:

                        res += str(time)+str(temp[i])
                    break
                if temp[i] == temp[i+1]:
                    time +=1
                else:
                    res += str(time)+str(temp[i])
                    time = 1
            # 处理最后一个字符


            if temp[-1] != temp[-2]:
                res += str(1) + str(temp[-1])
            temp = res
            res = ''
            time = 1
        return temp

标签:38,temp,res,数是,力扣,遍历,str,time,leetcode
来源: https://blog.csdn.net/qq_38737428/article/details/121343029