外觀數列」是一個整數序列,從數字 1 開始,序列中的每一項都是對前一項的描述,前五項如下:
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(1 ≤ n ≤ 30),輸出外觀數列的第 n 項,
注意:整數序列中的每一項將表示為一個字串,
public String countAndSay(int n) {
int cnt = 1;
int i = 0;
if(n == 1){
return "1";
}
String s = countAndSay(n-1);
StringBuilder res = new StringBuilder();
for(i = 1; i < s.length(); i++){
if(s.charAt(i) == s.charAt(i-1)){
cnt ++;
}else{
res.append(String.valueOf(cnt)).append(s.charAt(i-1));
cnt = 1;
}
}
// 處理最后一位的資料
if(i == s.length()) {
res.append(String.valueOf(cnt)).append(s.charAt(i-1));
}
return res.toString();
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/47537.html
標籤:其他
