[列表包含]Count and say

一、题目

The count-and-say sequence is the sequence of integers beginning as follows:
1, 11, 21, 1211, 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, generate the nth sequence.

Note: The sequence of integers will be represented as a string.

Subscribe to see which companies asked this question

二、思路

首先题目有歧义,第一次做还意味是给出一个串“1211”,把它读出来。。。

提交了一次发现好奇怪的测试例,后来才发现是让给定n,返回第n个这样的序列。。

思路还算简单,用递归的方法产生。读一个,写到list中,再读刚刚写入的,如此循环。

在读的时候,就遍历,边界情况要处理一下。

有了上次的小技巧,想把for .. in 都写成[]的样子,还是用的不熟,最终作罢,一会儿看一下[]的语法

三、代码

class Solution(object):
    def countAndSay(self, n):
        """
        :type n: int
        :rtype: str
        """
        num = [‘1‘]
        for i in range(n):
            num.append(self.say(num[-1]))
        return num[-2]

    def say(self, n):
        lenN = len(n)

        if lenN == 0:
            return ""
        elif lenN == 1:
            return ‘1‘ + n[0]

        count = 1
        rst = ""
        for cur in range(1, lenN):
            if n[cur] == n[cur - 1]:
                count += 1
                if cur == len(n) - 1:
                    rst += str(count) + n[cur]
            else:
                rst += str(count) + n[cur - 1]
                count = 1
        if n[-1] != n[-2]:
            rst += ‘1‘ + n[-1]
            return rst
        else:
            return rst

四、感悟

1.列表包含

1)一般循环

nums = [i for i in range(5)] = [0,1,2,3,4]

square = [n * n for n in nums]

2)加判断

[expression for item1 in iter1 if condition1

      for item2 in iter2 if condition2

      ...

        for itemn in itern if conditionn]

等价于:

for item1 in iter1:

  if condition1:

    for item2 in iter2:

      if condition2:

        ....

实例:

a = [-3, 4 ,5, -10]

b = "abc"

e = [(x, y) for x in a

      for y in b

      if x > 0]

时间: 2024-11-03 21:40:05

[列表包含]Count and say的相关文章

Python基础课:列表方法count(), index()

1 >>> x = [1,2,2,2,2,2,3,3,3,3,4,4] 2 >>> x.count(4) #元素4在列表x中出现的次数 3 2 4 >>> x.count(2) 5 5 6 >>> x.index(3) #元素3在列表x中首次出现的索引 7 6 8 >>> x.index(4) 9 10 10 >>> x.index(5) #列表x中没有5,抛出异常 11 Traceback (mo

Python3基础 列表方法count 查询指定元素在列表中出现了多少次

镇场诗: 诚听如来语,顿舍世间名与利.愿做地藏徒,广演是经阎浮提. 愿尽吾所学,成就一良心博客.愿诸后来人,重现智慧清净体.------------------------------------------ ex1: code: members=[['北斗阳明贪狼星君', '北斗阴精巨门星君'],[ '北斗真人禄存星君', '北斗玄冥文曲星君'], ['北斗丹元廉贞星君', '北斗北极武曲星君', '北斗天关破军星君']] print(members) print()#换行 #列表扩充,变为原

列表包含内容和时间

<ul class="result-list"> <li><a href="#">大盘股“神速”获批释两信号 牛市还有多久大盘股“神速”获批释两信号 牛市还有多久</a><time>2015-06-11</time></li> <li><a href="#">大盘股“神速”获批释两信号 牛市还有多久</a><time>

统计一个英文句子中包含2个a的单词有几个,并将两个a替换为星号,不能用count函数

def count(s,x): if (not isinstance(s,str)) or (not isinstance(x,str)): return None num =0 i = 0 while i<=len(s)-1: if s[i:i+len(x)]==x: num+=1 i+=len(x) else: i+=1 return num print(count("abcdbcd","bb")) s = "I am a abandon,aaa

Redis数据操作--列表

| 一个列表可以包含一个或以上数量的项(item),每个项按照它们被推入到 列表的位置来排序. # 每个列表项所处的位置决定这个项的索引值(index),索引以0开始,从列 最左端到右端依次递增,位于列表最左端的项的索引为0,而位于列表最右 端的项的索引为N-1,其中N为列表的长度. # 列表包含的项可以出现重复,它们不必是唯一的. | 推入和弹出操作 -- 从列表的左端推入值     lpush key value [value ...]     # 将一个或以上数量的值依次推入列表的左端,命

Python笔记_01列表 和元祖

Python笔记 第一章 列表和元祖 1.通用序列操作 所有序列都可以进行某些特定操作,包括:索引(indexing).分片(slicing).加(adding).乘(multiplying)以及检查某元素是否属于列表成员. 迭代:依次对序列中的每个元素重复执行某些操作. 序列的索引:通过元素在列表中的位置可以定位到该元素,这就是列表的索引,使用类似于list[0]对元素进行索引,索引0指向第一个元素.也可使用负数对元素进行索引,使用负数对元素索引时,列表中的最后一个元素由-1表示,例如list

零基础学python-8.1 列表

列表是python里面最具灵活性的有序集合对象类型 它可以包含其他任何类型的对象:数字.字符串.甚至是列表 特点:可变对象.可在原处修改.可通过偏移值.分片.方法调用 特性: 1.任意对象的有序集合 2.通过偏移读取 3.可变长度.异构和任意嵌套 4.属于可变序列 5.对象引用数组:列表包含0个或者多个对象的引用 操作 解释 L=[] 一个空列表 L=[0,1,2,3] 四项:索引从0到3 L=['abc',['123','abc']] 嵌套自列表 L=list('abc') 可迭代项目的列表

Python 2.7 学习笔记 列表的使用

同其它编程语言一样,python也提供了丰富的数据结构,以方便数据的处理.本文介绍两种最基本的数据集合,列表和元组的使用. 一.列表使用介绍 可以理解为一个有序的序列.其使用方式举例如下: list=[]  #定义了一个空的列表list.append("hello1")   #往列表的尾部插入一个元素list.append(12)  #往列表的尾部插入一个元素,可以看出,列表中的元素可以是多种类型的print listfor item in list:   #利用for循环遍历列表中的

python基础&mdash;&mdash;列表、字典

Python核心数据类型--列表 列表是一个任意类型的对象的位置相关的有序集合,它没有固定的大小.大小可变的,通过偏移量进行赋值以及其他各种列表的方法进行调用,能够修改列表.其他更多的功能可以查阅python的标准手册,或者运行help(list)或dir(list)查看list方法的完整清单. 任意对象的有序集合:从功能上看,列表是收集其他对象的地方,同时列表所包含的每一项都保持了从左到右的位置顺序. 通过偏移读取:可以通过列表对象的偏移对其进行索引,从而读取对象的某一部分内容.由于列表的每一