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.
相关产品推荐
相关产品推荐

