【发布时间】:2016-05-13 09:27:56
【问题描述】:
我是 scala 的新手,我正在尝试通过编写一个简单的程序来检查是否给定一个字符串,每个左括号都有自己的右括号。 例如对于字符串“{{ssss{{}}}}}”,答案应该是错误的。 我使用的代码如下:
package recfun
import common._
import scala.collection.mutable.Stack
object Main{
def main(args: Array[String]) {
println(balance("{{ssss{{}}}}}".toList))
}
def balance(chars: List[Char]): Boolean = {
val openParentheses : List[Char] = List('(','{','[')
val matchingParentheses = Map(
'}'-> '{',
']'->'[',
')'->'(');
val openParenthesesFound: Stack[Char] = Stack[Char]()
for (letter <- chars) {
if (openParentheses.contains(letter)) openParenthesesFound.push(letter)
else if (matchingParentheses.contains(letter)) {
if (openParenthesesFound.isEmpty || !openParenthesesFound.head.equals(matchingParentheses(letter))) return false
else
openParenthesesFound.pop
}
}
if (openParenthesesFound.nonEmpty) false else true
}
}
但是,在行中
if (openParenthesesFound.isEmpty || !openParenthesesFound.head.equals(matchingParentheses(letter))) return false
else
openParenthesesFound.pop
如果我按照 IntellijIdea 的建议删除“return”,则程序将失败并且我得到错误答案:True。
谁能帮我解释一下为什么会这样?我可能错过了一些东西。 另外,有没有人对这类任务有更好的解决方案?
非常感谢您的帮助, 乔瓦尼
【问题讨论】:
标签: scala