报数count-and-say

报数指的是,按照其中的整数的顺序进行报数,然后得到下一个数。如下所示:

1, 11, 21, 1211, 111221, ...

1 读作 "one 1" -> 11.

11 读作 "two 1s" -> 21.

21 读作 "one 2, then one 1" -> 1211.

给定一个整数 n, 返回 第 n 个顺序。

样例

给定 n = 5, 返回 "111221".

注意

整数的顺序将表示为一个字符串。

解题思路:不断地循环递归即可。第n个数字相当于在第n-1个的每一个数字前面加上个数的过程。

 1 public class Solution {
 2     /**
 3      * @param n the nth
 4      * @return the nth sequence
 5      */
 6     public String countAndSaymethod(String input){
 7         char temp = input.charAt(0);
 8         int num = 1;
 9         StringBuffer newString = new StringBuffer("");
10         for(int i=1;i<input.length();i++){
11             if(input.charAt(i)==temp){
12                 num++;
13                 continue;
14             }
15             newString.append(Integer.toString(num)+temp);
16             temp = input.charAt(i);
17             num = 1;
18         }
19         newString.append(Integer.toString(num) + temp);  
20         return newString.toString(); 
21     }
22     public String countAndSay(int n) {
23         // Write your code here
24         String result = "1";
25         int i = 1;
26         while(i<n){
27             result = countAndSaymethod(result);
28             i++;
29         }
30         return result;
31     }
32 }
原文地址:https://www.cnblogs.com/wangnanabuaa/p/5014876.html