报数序列是指一个整数序列,按照其中的整数的顺序进行报数,得到下一个数。其前五项如下:
1. 1
2. 11
3. 21
4. 1211
5. 111221
1 被读作 "one 1" ( "一个一" ) , 即 11 。
11 被读作 "two 1s" ( "两个一" ), 即 21 。
21 被读作 "one 2" , " one 1" ( "一个二" , "一个一" ) , 即 1211 。
给定一个正整数 n ,输出报数序列的第 n 项。
注意:整数顺序将表示为一个字符串。
示例 1:
输入: 1
输出: "1"
示例 2:
输入: 4
输出: "1211"
解决思路源代码
1 public class Testaa {
2
3
4 public static void main(String[] args) {
5 int num=4;
6 String str="";
7 for(int i=1;i<=num;i++){
8 if(i==1){
9 str= outRead(1);
10 System.out.println(str);
11 }else{
12 str=outRead(Integer.valueOf(str));
13 System.out.println(str);
14 }
15 }
16
17 }
18
19
20 public static String outRead(int num) {
21 String str="";
22 String sort = String.valueOf(num);
23 char[] chars = sort.toCharArray();
24 char start = chars[0];
25 if (chars.length == 1) {
26 str+= (1 + "" + start + "");
27 } else {
28 int index = 0;
29 for (int i = 0; i < chars.length; i++) {
30 if (start == chars[i] && i<chars.length-1) {
31 index +=1;
32 } else if(start == chars[i] && i==chars.length-1){
33 index +=1;
34 return (index + "" + start + "");
35 }else{
36 str+=index + "" + start + "";
37 if (i != chars.length) {
38 str+= outRead(Integer.valueOf(sort.substring(i)));
39 }
40 break;
41 }
42 }
43
44 }
45 return str;
46 }
47
48
49 }
结果显示: