Note: The sequence of integers will be represented as a string.
思路:題意實在太難理解了,尤其是英文又不好,只能參看下別人的資料,理解下規則。終於理解,題意是n=1時輸出字符串1;n=2時,數上次字符串中的數值個數,因為上次字符串有1個1,所以輸出11;n=3時,由於上次字符是11,有2個1,所以輸出21;n=4時,由於上次字符串是21,有1個2和1個1,所以輸出1211。依次類推,寫個countAndSay(n)函數返回字符串。
題意理解之後就好辦了,是典型的遞歸問題,其代碼很簡單,如下:
public class Solution {
public String countAndSay(int n) {
if(n == 1){
return 1;
}
//遞歸調用,然後對字符串處理
String str = countAndSay(n-1) + *;//為了str末尾的標記,方便循環讀數
char[] c = str.toCharArray();
int count = 1;
String s = ;
for(int i = 0; i < c.length - 1;i++){
if(c[i] == c[i+1]){
count++;//計數增加
}else{
s = s + count + c[i];//上面的*標記這裡方便統一處理
count = 1;//初始化
}
}
return s;
}
}