题目
报数序列是一个整数序列,按照其中的整数的顺序进行报数,得到下一个数。其前五项如下:
1 | 1. 1 |
1 被读作 "one 1" ("一个一") , 即 11。
11 被读作 “two 1s” (“两个一”), 即 21。
21 被读作 “one 2”, “one 1” ("一个二" , "一个一") , 即 1211。
给定一个正整数 n(1 ≤ n ≤ 30),输出报数序列的第 n 项。
注意:整数顺序将表示为一个字符串。
示例 1:
1 | 输入: 1 |
示例 2:
1 | 输入: 4 |
题解
思路
- 题目意思挺费解的,但是评论区解释得挺清楚了
循环含义
- 每次外循环含义为给定上一个人报的数,求下一个人报的数
- 每次内循环为遍历上一个人报的数
具体思路
- 先设置上一人为’1’
- 开始外循环
- 每次外循环先置下一人为空字符串,置待处理的字符num为上一人的第一位,置记录出现的次数为1
- 开始内循环,遍历上一人的数,如果数是和num一致,则count增加。
- 若不一致,则将count和num一同添加到next_person报的数中,同时更新num和count
- 别忘了更新next_person的最后两个数为上一个人最后一个字符以及其出现次数!
代码
1 | class Solution: |


