目录
题目
报数序列是一个整数序列,按照其中的整数的顺序进行报数,得到下一个数。其前五项如下:
-
1
-
11
-
21
-
1211
-
111221
1 被读作 “one 1” (“一个一”) , 即 11。
11 被读作 “two 1s” (“两个一”), 即 21。
21 被读作 “one 2”, “one 1” (“一个二” , “一个一”) , 即 1211。
给定一个正整数 n(1 ≤ n ≤ 30),输出报数序列的第 n 项。
注意:整数顺序将表示为一个字符串。
solution_1
思路:用求第n个数时,用双指针遍历第n-1个数,从头开始,快指针向前遍历,直到相邻两个数不一样,此时将快慢指针的距离加一,和当前慢指针指向的数并入第n个数中。
举个栗子:第4个数是1211,开始时快慢指针都指向位置0,因为位置0和位置1的数不同,此时将快慢指针的距离加一(即1)和慢指针指向的数(即1),并入第5个数得到11,接下来,快慢指针都指向位置1,跟位置0一样,此时将12并入第5个数得到1112,然后,快慢指针指向位置2,