1. 程式人生 > >leetcode--38. 數數並說

leetcode--38. 數數並說

題目:38. 數數並說

連結:https://leetcode-cn.com/problems/count-and-say/description/

一個序列,第一項是1,我們讀作1個1,於是下一項就是11。第二項不是11嘛,讀作2個1,於是第三項是21,讀作1個2,1個1,於是第四項是1211,這個又讀作1個1,1個2,2個1,於是下一項就是111221...略略略...

python:

def getNext(s):
    s = list(str(s))
    temp, cnt, res = -1, 1, ""
    for num in s:
        if num == str(temp):
            cnt += 1
        else:
            if temp != -1:
                res += (str(cnt) + str(temp))
            temp, cnt = num, 1
    res += (str(cnt) + str(temp))
    return res

class Solution:
    ans = ["1"]
    def countAndSay(self, n):
        """
        :type n: int
        :rtype: str
        """
        while len(self.ans)<n:
            self.ans.append(getNext(int(self.ans[-1])))
        return self.ans[n-1]