🌗 38. 外观数列

吞佛童子2022年10月10日
  • algorithm
  • String
小于 1 分钟

🌗 38. 外观数列

难度: 🌗

问题描述

img_1.png


解法

class Solution {
    public String countAndSay(int n) {
        // 思路:
        // 遍历,遇到非连续的字符就将前面的表示
        String cur = "1";
        if(n == 1) {
            return cur;
        }
        // n > 1
        // 对 cur 进行拆分,得到 cur 对应的字符串
        for(int i = 1; i < n; i ++) {
            cur = getStr(cur);
        }
        return cur;
    }

    private String getStr(String str) {
        // System.out.println(str);
        int len = str.length();
        // len > 1
        StringBuilder sb = new StringBuilder();
        char pre = str.charAt(0);
        int count = 1;
        for(int i = 1; i < len; i ++) {
            char cur = str.charAt(i);
            if(pre == cur) {
                count ++;
            } else {
                sb.append(count).append(pre);
                pre = cur;
                count = 1;
            }
        }
        if(count > 0) {
            sb.append(count).append(pre);
        }
        // System.out.println(sb.toString());
        return sb.toString();
    }
}

输出

img.png

上次编辑于: 2022/10/10 下午8:43:48
贡献者: liuxianzhishou