gpt4 book ai didi

r - 查找字符串 R 代码中嵌套括号的最大深度

转载 作者:行者123 更新时间:2023-12-02 03:37:05 24 4
gpt4 key购买 nike

我在完成此 R 代码时遇到问题。我们得到一个带有括号的字符串,如下所示 “(((X))(((Y))))”我们需要找到平衡括号的最大深度,如上例中的 4。因为‘Y’被 4 个平衡括号包围。

如果括号不平衡则返回-1我的代码如下所示:

current_max = 0
max = 0
def = function (S){
n=S
for (i in nchar(n))
if (is.element('(',n[i]))
{
current_max <- current_max + 1
}
if (current_max > max)
{
max <- current_max
}
else if (is.element(')',n[i]))
{
if (current_max > 0)
{
current_max <- current_max - 1
}
else
{
return -1
}
}
if (current_max != 0)
{
return -1
}
return (max)
}

但是当我调用函数 def("(A((B)))") 时,答案应该是 2。但是每次它都显示 0,即使括号不平衡。我不确定代码是否正确或错误在哪里。我正在努力学习 R,所以请耐心等待。谢谢

最佳答案

如果x <- "( ((X)) (((Y))) )" ,然后删除所有非括号并拆分为字符...

y <- unlist(strsplit(gsub("[^\\(\\)]", "", x), ""))

y
[1] "(" "(" "(" ")" ")" "(" "(" "(" ")" ")" ")" ")"

然后最大嵌套是 +1(对于 ( )和 -1(对于 ) )的最大累积和...

z <- max(cumsum(ifelse(y=="(", 1, -1)))

z
[1] 4

如果括号不平衡则 sum(ifelse(y=="(", 1, -1)))不会等于零。

关于r - 查找字符串 R 代码中嵌套括号的最大深度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49840432/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com