28报数

本文为转载文

思路分析
属于考察字符串的题目,好像没有什么很巧妙的解法。大多数都是用的暴力遍历的解法。

用List表示报数的集合,i 表示从1 到 n 的报数。单独写了一个求下一个报数结果的方法:nextseq,用res表示要返回的报数。

遍历List[i-1]每一个字符,如果当前字符与下一个字符相等,count+1; 不等的话,res添加当前字符。要注意遍历到最后一个字符的情况特殊处理。
--------------------- 
作者:挥挥洒洒 
来源:CSDN 
原文:https://blog.csdn.net/u010420283/article/details/84852935 
版权声明:本文为博主原创文章,转载请附上博文链接!

#!/usr/bin/env python
# -*- coding:utf-8 -*- 
# Author: Jia ShiLin

# 独写了一个求下一个报数结果的方法:nextseq
# 用res表示要返回的报数。
def nextseq(seq):
    if len(seq) == 1:
        return '1' + seq
    res = ''
    count = 1
    for i in range(len(seq) - 1):
        if seq[i] == seq[i + 1]:
            count += 1
        else:
            res = res + str(count) + seq[i]
            count = 1
        if i == len(seq) - 2:  # 判断是否到达最后一个
            res = res + str(count) + seq[i + 1]
    return res


def countAndSay(n):
    List = []
    List.append('1')
    for i in range(1, n):
        cur = nextseq(List[i - 1])
        List.append(cur)
    return List[n-1]
a = countAndSay(4)
print(a)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值