leetcode 38 報數
阿新 • • 發佈:2018-12-07
報數序列是一個整數序列,按照其中的整數的順序進行報數,得到下一個數。其前五項如下:
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 項。
注意:整數順序將表示為一個字串。
示例 1:
輸入: 1 輸出: "1"
示例 2:
輸入: 4 輸出: "1211"
class Solution { public String countAndSay(int n) { if(n == 1) return "1"; String prev = countAndSay(n - 1); StringBuilder str = new StringBuilder(); int i = 0; while(i < prev.length()) { char curr = prev.charAt(i); int j = 0; while(i+j < prev.length() && prev.charAt(i+j) == curr) j++; str.append(j); str.append(curr); i += j; } return str.toString(); } }