count-and-say

Easy

Count-and-say 序列是一個(gè)如下的整數(shù)序列。 給定一個(gè)整數(shù)n,返回第n個(gè)序列。序列用string表示。

1, 11, 21, 1211, 111221, ...
1讀作一個(gè)1,或11
11讀作兩個(gè)1,或21
21讀作一個(gè)2一個(gè)1,或1211

Leecode把此題歸為easy檔,我倒是覺得有些難度。
最開始我把題理解錯(cuò)誤,認(rèn)為是: 第一個(gè)數(shù)是n,那么由n衍生出的coutn-and-say序列的第n個(gè)值是什么?所以就有了下面的code。(開始是string=str(n))。
將問題簡(jiǎn)化為求上面序列的第n個(gè)值,應(yīng)該有更簡(jiǎn)單的辦法,歡迎反饋。

from itertools import groupby
class Solution(object):
    def countAndSay(self, n):
        """
        :type n: int
        :rtype: str
        """
        if n == 0 or n == 1:
            return str(n)
        string = '1'
        for _ in xrange(n-1):
            keys = [key for key, _ in groupby(string)]
            counts = [len(list(group)) for _, group in groupby(string)]
            resp = ''
            for key, count in zip(keys,counts):
                resp += str(count)+key
            string = resp
        return string
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容