You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin字符串压缩函数遗漏末尾字符问题求助

问题分析与修复

你的代码核心问题是循环没有处理最后一组连续字符:循环范围是0 until s.length - 1,也就是只遍历到倒数第二个字符,当循环结束时,最后一组字符(不管是单个还是重复多个)都没有被追加到结果字符串中,这就是为什么a、x这类位于字符串末尾的字符会被遗漏。

修复后的代码

fun sCompression(s: String): String {
    if (s.isEmpty()) return "" // 处理空字符串边界情况
    val solution = StringBuilder()
    var count = 1

    for (i in 0 until s.length - 1) {
        if (s[i] == s[i + 1]) {
            count++
        } else {
            solution.append("${s[i]}$count")
            count = 1
        }
    }
    // 追加最后一组字符
    solution.append("${s.last()}$count")
    return solution.toString()
}

关键修改点

  • 新增空字符串判断:避免空输入导致的索引越界问题
  • 改用StringBuilder拼接字符串:比直接用String.plus()效率更高,尤其适合长字符串场景
  • 循环结束后追加最后一组字符:补上原代码遗漏的末尾字符统计

测试后可覆盖你给出的所有预期输出,比如针对Out3的输入,循环结束后会把最后一个x和对应的count=2追加到结果中,最终得到a2b3c6d11u6x2,完全符合预期。

内容的提问来源于stack exchange,提问作者OEThe11

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 15:57:19