[LeetCode]Count and Say 计数和发言

Count and Say 计数和发言

思路:首先要理解题意,可以发现后者是在前者的基础之上进行的操作,所以我们拿之前的结果作为现在函数的参数循环n-1次即可,接下来就是统计字符串中相应字符的个数,需要注意的是最后一个字符别忘了处理。

class Solution(object):
    def countAndSay(self, n):
        """
        :type n: int
        :rtype: str
        """
        if n < 2:
            return '1'
        ret_str = '1'
        while n > 1:
            temp, current = '', 0
            for i, v in enumerate(ret_str):
                if i > 0 and v != ret_str[i-1]:
                    temp += str(current) + ret_str[i-1]
                    current = 1
                else:
                    current += 1
            ret_str = temp + (str(current) + ret_str[-1] if current > 0 else '')
            n -= 1
        return ret_str
posted @ 2017-09-19 09:32  banananana  阅读(267)  评论(0)    收藏  举报