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

Kotlin实现n对有效括号生成 适配指定solution函数返回ASCII升序结果

Kotlin合法括号排列适配实现

核心调整逻辑

你原本写的递归回溯逻辑本身是正确的,而且因为优先拼接ASCII值更小的((ASCII码40,小于)的41),生成的结果天然符合ASCII升序要求,不需要额外排序,只需要做3处适配即可匹配要求的函数签名:

  • 处理给定函数的入参:入参为字符串数组,默认取第一个元素转为整数,作为括号对数n
  • 把原本直接打印结果的递归逻辑改为内部辅助函数,将合法结果收集到可变列表中
  • 递归执行完成后,将结果列表转为Array<String>类型返回

完整实现代码

fun solution(n: Array<String>): Array<String> {
    // 解析括号对数
    val bracketPairCount = n.first().toInt()
    val resultCollector = mutableListOf<String>()

    // 适配原递归逻辑为内部辅助函数
    fun balancedBracket(
        currentStr: String,
        openUsed: Int,
        closeUsed: Int
    ) {
        if (closeUsed == bracketPairCount) {
            resultCollector.add(currentStr)
            return
        }
        // 优先加左括号,保证输出顺序天然符合ASCII升序要求
        if (openUsed < bracketPairCount) {
            balancedBracket("$currentStr(", openUsed + 1, closeUsed)
        }
        if (openUsed > closeUsed) {
            balancedBracket("$currentStr)", openUsed, closeUsed + 1)
        }
    }

    // 初始化递归:空串起始,左右括号已使用数均为0
    balancedBracket("", 0, 0)
    return resultCollector.toTypedArray()
}

效果验证

传入入参arrayOf("3")时,函数返回结果为["((()))","(()())","(())()","()(())","()()()"],和预期输出完全一致。


内容的提问来源于stack exchange,提问作者Sanjay G.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 19:21:30