38. 外观数列

97 阅读1分钟

class Solution {
    public String countAndSay(int n) {
        String s = "1";
        for (int i = 0; i < n - 1; i++) {
            StringBuilder sb = new StringBuilder();
            for (int j = 0; j < s.length(); j++) {
                int k = j;
                //常用字符串技巧。求字符串内一段相同的字符个数
                while (k < s.length() && s.charAt(k) == s.charAt(j)) {
                    k++;
                }
                sb.append(k - j).append(s.charAt(j));
                //记得要更新j的为位置
                j = k - 1;
            }
            s = sb.toString();
        }
        return s;
    }
}