#leetcode#38. Count and Say

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ChiBaoNeLiuLiuNi/article/details/73241173

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


猜你喜欢

转载自blog.csdn.net/ChiBaoNeLiuLiuNi/article/details/73241173