-4

我有一些具体的任务。我们有像“(()[]<>)”这样的字符串或熟悉的东西。我的面试问题中的一个问题是如何检查 String 是正确还是不正确。例如:“()[]<>” - 真,“([)” - 假,“[(])” - 假,“([<>])” - 真。非常感谢你们!

4

1 回答 1

4

您需要使用堆栈来处理它。

当您找到一个新的左括号时,您将推入堆栈。

当您找到右括号时,请查看堆栈中的顶部元素 - 并查看它是否匹配。即,如果您刚刚找到一个“)”,堆栈上的最后一个元素是“(”吗?

如果是,则弹出堆栈的该元素。如果不是,那么您有一个“不正确”的字符串,您可以停止进一步处理。

此外,一旦你到达字符串的末尾,如果堆栈上还有任何东西,我们就知道有一个未终止的括号。

于 2013-11-02T10:43:18.693 回答