Skip to content

38. 外观数列 ​

  • 题号:38
  • 来源:LeetCode
  • 难度:中等
  • 标签:字符串 模拟
  • 语言:TypeScript
  • 解法:1 个
  • 作者:lmliheng
  • 最近更新:2026-09-27

TypeScript · 更新于 2026-09-27

逐层做游程编码,迭代 n 次得到答案

typescript
/**
 * @difficulty medium
 * @tags 字符串,模拟
 * @note 逐层做游程编码,迭代 n 次得到答案
 * @38. 外观数列
 * 字符串压缩算法
 */
function countAndSay(n:number) {
    const REl = (str:string) => {
        let res = ''
        let k = '-1'
        let v = 0
        if (str.length === 1) { return str + str }
        for (let i = 0; i < str.length; i++) {
            if (k === '-1') {
                k = str[i]
                v++
                continue
            }
            if (str[i] === k) {
                v++
            } else {
                res += (v.toString() + k)
                k = str[i]
                v = 1
            }

            if (i === str.length - 1) {
                res += (v.toString() + k)
            }
        }
        return res
    }
    let rle = '1'
    for (let i = 2; i <= n; i++) {
        console.log(REl(rle))
        rle = REl(rle)

    }
    return rle
};

源码:ts/leetcode/38. 外观数列.ts


在 GitHub 上查看题目所在目录:lmliheng/algorithm