count-and-say

Easy

Count-and-say 序列是一个如下的整数序列。 给定一个整数n,返回第n个序列。序列用string表示。

1, 11, 21, 1211, 111221, ...
1读作一个1,或11
11读作两个1,或21
21读作一个2一个1,或1211

Leecode把此题归为easy档,我倒是觉得有些难度。
最开始我把题理解错误,认为是: 第一个数是n,那么由n衍生出的coutn-and-say序列的第n个值是什么?所以就有了下面的code。(开始是string=str(n))。
将问题简化为求上面序列的第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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容