本文为转载文
思路分析
属于考察字符串的题目,好像没有什么很巧妙的解法。大多数都是用的暴力遍历的解法。
用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)