相关疑难解决方法(0)

基本递归,检查平衡括号

我以前编写的软件使用堆栈来检查平衡方程,但现在我被要求递归地编写一个类似的算法来检查正确的嵌套括号和括号.

好例子:()[]()([]()[])

不好的例子:((]([)]

假设我的函数被调用:isBalanced.

每次传递都应该评估一个较小的子串(直到达到2的基本情况)?或者,我应该总是评估完整的字符串并向内移动索引吗?

algorithm recursion stack

40
推荐指数
2
解决办法
5万
查看次数

Scala方式来编程一堆if

我开始使用scala,并尝试应用功能方式,但我出来了一堆嵌套if\else结构很难读,我想知道有更好的方法来编程这样的东西?例如,我写了脚本,执行括号平衡

def balance(chars: List[Char]): Boolean = {
    def checkParentesys(chars: List[Char], parentesis: List[Char]): Boolean =
      if (chars.isEmpty && parentesis.isEmpty)
        true
      else
        if (chars.head == '(')
            checkParentesys(chars.tail, '(' :: parentesis)
        else
            if (parentesis.isEmpty)
                false
            else
                checkParentesys(chars.tail, parentesis.tail)

    checkParentesys(chars.filter(s => s == '(' || s == ')'), List())
  }
Run Code Online (Sandbox Code Playgroud)

你能建议,我怎样才能把它写得更实用,更像scala?

functional-programming scala

16
推荐指数
2
解决办法
7889
查看次数