字符串——8、报数

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

1.       1
2.       11
3.       21
4.       1211
5.       111221

理解
1被读作"1个1",即11
11被读作"2个1",即21
21被读作"1个2","1个2",即1211
1211被读作"1个1","1个2","2个1",即111221
给定一个正整数 n ( 1 ≤ n ≤ 30 ) n(1\leq{n}\leq30) n1n30,输出报数序列的第 n n n项。

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

示例1:
输入:1
输出:"1"

示例2:
输入:4
输出:"1211"

思路:

  1. 初始化序列,即报数1时输出1;
  2. 遍历序列,将前一个与当前的字符判断:
    1)若相同,则计数加1,输出计数和字符;
    2)若不同,将暂存字符加上当前的计数和字符,同时前一个字符一到当前位置,并将计数设为1。
  3. 将所有字符连起来,返回结果。
class Solution:
    def countAndSay(self, n):
    	seq = '1'
    	for i in range(n-1):
    	    pre = seq[0]
    	    temp = ''
    	    cnt = 0
    	    for char in seq:
    	    	if char == pre:
    	    	    cnt += 1
    	    	else:
    	    	    temp += str(cnt) + str(pre) 
    	    	    pre = char
    	    	    cnt = 1
    	    seq = temp + str(cnt) + str(pre) 
    	return seq 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值