1. 程式人生 > >Count and Say

Count and Say

/*      * 題目的關鍵就是搞懂題意,數上個n對應的數字:      * 當n=1結果是  1;      * 當n=2結果是  1個1,結果就是21;      * 當n=3結果是  1個2,1個1,結果就是1211;      * 當n=4結果是  1個1,1個2,2個1,結果就是111221;      * 以此類推      * 解題的關鍵就是數重複出現的個數,遇到不同的數字就重新數,直到字串末尾      * */

public static String countAndSay(int n) {         if(n<1) return "";         String str = "1";         for (int i = 2; i <= n; i++) {             StringBuffer sb =new StringBuffer();             int count =1 ;             for (int j = 1; j < str.length(); j++) {                 if (str.charAt(j) == str.charAt(j - 1)) {                     count++;                 } else {                     sb.append(count);                     sb.append(str.charAt(j - 1));                     count = 1;                 }             }              sb.append(count);              sb.append(str.charAt(str.length() - 1));              str = sb.toString();         }         return str;     }