跳转至

38.外观数列

这道题就是把字符串中的连续相同字符个数插入到字符串的前面。比如21,2的个数是1,1的个数也是1,所以组成的字符串是1211。1211中1的个数是1,2的个数是1,1的个数是2所以可以推导出字符串为111221。

class Solution {
    public String countAndSay(int n) {
        String s = "1";
        for(int i = 0;i< n - 1;i++){
            s = count(s);
        }
        return s;
    }
    private String count(String s) {
        StringBuffer sb = new StringBuffer();
        char c = s.charAt(0);
        int count = 0;
        for(int i = 0;i < s.length();i++){
            if(c == s.charAt(i)){
                count++;
            }else{
                sb.append(count);
                sb.append(c);
                c = s.charAt(i);
                count = 1;
            }
            if(i == s.length()-1){
                sb.append(count);
                sb.append(c);
            }
        }
        return sb.toString();
    }
}