• LeetCode:38. 外观数列


    外观数列」是一个整数序列,从数字 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(1 ≤ n ≤ 30),输出外观数列的第 n 项。

    注意:整数序列中的每一项将表示为一个字符串。

    示例 1:

    输入: 1
    输出: "1"
    解释:这是一个基本样例。
    示例 2:

    输入: 4
    输出: "1211"
    解释:当 n = 3 时,序列是 "21",其中我们有 "2" 和 "1" 两组,"2" 可以读作 "12",也就是出现频次 = 1 而 值 = 2;类似 "1" 可以读作 "11"。所以答案是 "12" 和 "11" 组合在一起,也就是 "1211"。

     1 class Solution:
     2     def countAndSay(self, n: int) -> str:
     3         seq = '1'
     4         for i in range(n-1): #因为第一次不需要调用self.getNext(seq)方法  所以要减一
     5             seq = self.getNext(seq)
     6         return seq
     7     
     8     def getNext(self,seq):
     9         i, next_seq = 0,''
    10         while i < len(seq):
    11             count = 1
    12             while i < len(seq)-1 and seq[i] == seq[i+1]:
    13                 count+=1
    14                 i+=1
    15             next_seq += str(count) + seq[i] #将统计的数据写入next_seq字符串中
    16             i+=1
    17         return next_seq

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/count-and-say
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

  • 相关阅读:
    Codeforces 1149 B
    Tenka1 Programmer Contest 2019 D
    BZOJ 1001 [BeiJing2006]狼抓兔子
    Codeforces 741 D
    HDU 5306 Gorgeous Sequence
    HDU 6521 Party
    Codeforces 912A/B
    Educational Codeforces Round 35 B/C/D
    Codeforces 902D/901B
    Codeforces 902B
  • 原文地址:https://www.cnblogs.com/Halo-zyh-Go/p/12408479.html
Copyright © 2020-2023  润新知