#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author: YuLi
# @Time :2/1/2019 下午3:52
'''
报数序列是一个整数序列，按照其中的整数的顺序进行报数，得到下一个数。其前五项如下：
1.     1
2.     11
3.     21
4.     1211
5.     111221
1 被读作  "one 1"  ("一个一") , 即 11。
11 被读作 "two 1s" ("两个一"）, 即 21。
21 被读作 "one 2",  "one 1" （"一个二" ,  "一个一") , 即 1211。
给定一个正整数 n（1 ≤ n ≤ 30），输出报数序列的第 n 项。
注意：整数顺序将表示为一个字符串。

示例 1:
输入: 1
输出: "1"
示例 2:
输入: 4
输出: "1211"
'''
class Solution:
    def countAndSay(self, n):
        if n == 1:
            return '1'
        prev = self.countAndSay(n-1)
        a=''
        l=len(prev)
        i=0
        while i<l:
            count=0
            while i+count<l and prev[i+count] == prev[i]:
                count+=1
            a += (str(count)+str(prev[i]))
            i=i+count
        return a