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; }