1. 程式人生 > >#leetcode#38. Count and Say

#leetcode#38. Count and Say

The count-and-say sequence is the sequence of integers with the first five terms as following:

1.     1
2.     11
3.     21
4.     1211
5.     111221

1 is read off as "one 1" or 11.
11 is read off as "two 1s" or 21.
21 is read off as "one 2, then one 1"

 or 1211.

Given an integer n, generate the nth term of the count-and-say sequence.

Note: Each term of the sequence of integers will be represented as a string.

Example 1:

Input: 1
Output: "1"

Example 2:

Input: 4
Output: "1211"

Subscribe to see which companies asked this question.

Show Tags Show Similar Problems ============================================================================= 挺無聊的一個題,還是Facebook的面試題, 不過也確實挺考察程式碼能力的, 面試時bug free的寫出來也不簡單啊, 時間複雜度是 exponential ?
public class Solution {
    public String countAndSay(int n) {
        String curStr = "1";
        while(n > 1){
            int i = 0;
            StringBuilder sb = new StringBuilder();
            while(i < curStr.length()){
                int count = 1;
                char curNum = curStr.charAt(i);
                while(i + 1 < curStr.length() && curStr.charAt(i + 1) == curStr.charAt(i)){
                    i++;
                    count++;
                    
                }
                sb.append(count);
                sb.append(curNum);
                i++;
            }
            curStr = sb.toString();
            n--;
        }
        
        return curStr;
    }
}