Leetcode刷题笔记25-报数

1. 题目

报数序列是指一个整数序列,按照其中的整数的顺序进行报数,得到下一个数。其前五项如下:

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 ,输出报数序列的第 n 项。

注意:整数顺序将表示为一个字符串。

2. 示例

示例 1:

输入: 1
输出: "1"

示例 2:

输入: 4
输出: "1211"

3. 解答

python3 60ms

class Solution:
    def countAndSay(self, n):
        """
        :type n: int
        :rtype: str
        """
        seq = "1"
        if n == 1: return seq
        for i in range(n-1):
            count = 1
            new_seq = ''
            if len(seq) == 1:
                seq = "11"
                continue
            for j in range(1, len(seq)):
                # print(seq[j])
                if seq[j] != seq[j-1]:
                    new_seq += (str(count) + seq[j-1])
                    count = 1
                else:
                    count += 1
                if j == len(seq)-1:
                    new_seq += (str(count) + seq[j])
            # print(new_seq)
            seq = new_seq
        return seq

solution = Solution()
s = solution.countAndSay(4)
print(s)

猜你喜欢

转载自www.cnblogs.com/Joyce-song94/p/9187594.html