1. 程式人生 > >LeetCode38. Count and Say

LeetCode38. Count and Say

The count-and-say sequence is the sequence of integers with the first five terms as following:

1.     1
2.     11
3.     21
4.     1211
5.     111221

1 is read off as "one 1" or 11.11 is read off as "two 1s" or 21.21 is read off as "one 2, then one 1" or 1211.

Given an integer n where 1 ≤ n ≤ 30, generate the n

th term of the count-and-say sequence.

Note: Each term of the sequence of integers will be represented as a string.

<思路>題看著比較煩,只能一步步讀數。cur_val是當前要讀的數(一位),count是這個數的個數,part算是中間變數,儲存的是這一次迴圈的count和cur_val(幾個幾)。

class Solution(object):
    def countAndSay(self, n):
        """
        :type n: int
        :rtype: str
        """
        num = '1'
        
        while n>1:
            cur_val = num[0]
            count = 0
            part = ''
            
            for j in num:
                if cur_val == j:
                    count += 1
                else:
                    part += str(count)+cur_val
                    cur_val = j
                    count = 1
            
            part += str(count) + cur_val
            num = part
            n -= 1
        return num