题目
报数序列是一个整数序列,按照其中的整数的顺序进行报数,得到下一个数。其前五项如下:
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: |