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

请求补全计算字符串嵌套括号最大深度的R代码并解决问题

R语言实现平衡括号最大深度计算(不平衡则返回-1)

咱们先来明确需求:给定一个包含括号的字符串(例如 "( ((X)) (((Y))) )"),我们需要计算其中平衡括号的最大深度——就像示例里的Y被4层括号包裹,所以返回4;如果字符串里的括号是不平衡的(比如左括号多或者右括号多),那就返回-1。

你提供的初始代码存在循环逻辑错误、变量作用域问题,也没处理右括号和不平衡校验的情况,我来帮你修正并完善:

calculate_bracket_depth <- function(S) {
  current_max <- 0
  max_depth <- 0
  bracket_count <- 0 # 跟踪括号平衡状态的计数器
  
  # 将字符串拆分为单个字符的向量,逐个遍历
  for (char in strsplit(S, "")[[1]]) {
    if (char == "(") {
      current_max <- current_max + 1
      bracket_count <- bracket_count + 1
      # 实时更新最大深度
      if (current_max > max_depth) {
        max_depth <- current_max
      }
    } else if (char == ")") {
      bracket_count <- bracket_count - 1
      # 若右括号数量超过左括号,直接判定为不平衡
      if (bracket_count < 0) {
        return(-1)
      }
      current_max <- current_max - 1
    }
    # 非括号字符(如X、Y)直接忽略
  }
  
  # 遍历结束后检查括号是否完全匹配
  if (bracket_count != 0) {
    return(-1)
  }
  
  return(max_depth)
}

# 测试用例
test_str <- "( ((X)) (((Y))) )"
calculate_bracket_depth(test_str) # 预期返回4

unbalanced_str1 <- "((((Y)))"
calculate_bracket_depth(unbalanced_str1) # 预期返回-1

unbalanced_str2 <- "())("
calculate_bracket_depth(unbalanced_str2) # 预期返回-1

代码关键逻辑说明:

  • current_max:记录当前遍历位置的括号嵌套深度
  • max_depth:全程跟踪并保存遇到的最大嵌套深度
  • bracket_count:通过增减计数,实时校验括号的平衡状态
  • 遍历过程中一旦发现右括号多于左括号,直接返回-1;遍历结束后若计数不为0,说明左右括号数量不匹配,同样返回-1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:55:49