leetcode-38 | 报数 简单难度

题目描述

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

  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 项。
注意:整数顺序将表示为一个字符串。

思路解答

采用循环计数,然后取当前的值和数字的个数,组成这一组相同的元素的报数,如:
11112
当前的数值是1,然后循环计数1有4个,故而我们组成:41
当前的数值是2,然后循环计数2有1个,故而我们组成:12
也即是:4112

class Solution(object):
    def calc(self, s):
        i, j = 0, 0
        count = 0
        temp = ""
        while j < len(s):
            while j < len(s) and s[i] == s[j]:
                count += 1
                j += 1
            temp += str(count) + "" + s[i]
            i = j
            count = 0
        return temp

    def countAndSay(self, n):
        """
        :type n: int
        :rtype: str
        """
        s = "1"
        for i in range(n-1): #n-1是因为我的初始值是1,此时n=1是进入循环,变成了11,很明显这是第二项的值。
            s = self.calc(s)
        return s

结果:

执行用时 : 24 ms, 在Count and Say的Python提交中击败了100.00% 的用户
内存消耗 : 11.5 MB, 在Count and Say的Python提交中击败了36.80% 的用户

提交时间状态执行用时内存消耗语言
几秒前通过24 ms11.5MBpython

   Reprint policy


《leetcode-38 | 报数 简单难度》 by 梦否 is licensed under a Creative Commons Attribution 4.0 International License
 Previous
数据结构精讲 | 基本概念 数据结构精讲 | 基本概念
何为数据?数据是信息的载体,在计算机科学中指的是所有能够输入到计算机中并能够被计算机程序识别和处理的符号集合。可分为两类:一类是整数、实数等数值数据;另一类是文字、图像、声音等非数值数据。 何为数据结构?数据结构(data structur
Next 
微信小程序开发 | rpx 微信小程序开发 | rpx
相关常识分辨率分辨率是屏幕像素的数量,一般用屏幕宽度的像素点乘以屏幕高度的像素点。如描述iphone6的分辨率是750*1334。分为下面两类: 物理分辨率是硬件所支持的分辨率。 逻辑分辨率是软件可以达到的分辨率。 实际工作中设计师常常给
  TOC