外观数列00

题目链接

外观数列

题目描述

外观数列00_第1张图片
外观数列00_第2张图片

注意点

  • 1 <= n <= 30
  • countAndSay(n) 是对 countAndSay(n-1) 的描述,然后转换成另一个数字字符串

解答思路

  • 从第一个数1开始不断遍历推出下一个外观数列,下一个外观数列是由当前数列中连续数字的数量+该数字组成,参照本思路即可

代码

class Solution {
    public String countAndSay(int n) {
        String oldData = "1";
        for (int i = 2; i <= n; i++) {
            StringBuilder newData = new StringBuilder();
            for (int j = 0; j < oldData.length();) {
                int num = 1;
                char c = oldData.charAt(j);
                j++;
                while (j < oldData.length() && oldData.charAt(j) == c) {
                    num++;
                    j++;
                }
                newData.append(num).append(c);
            }
            oldData = newData.toString();
        }
        return oldData;
    }
}

关键点

你可能感兴趣的:(算法,数据结构,leetcode,算法,java)