leetcode --报数

扫码查看

报数序列是指一个整数序列,按照其中的整数的顺序进行报数,得到下一个数。其前五项如下:

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 }

结果显示:

01-07 07:45
查看更多