我有一些特定的任务。我们有类似“(()[]<>)”之类的字符串或熟悉此内容的字符串。 在我的访谈qustion中的一个问题是如何检查String是正确还是不正确。 例如:“()[]<>” - true,“([]” - false,“[(])” - false,“([<>])” - true。 非常感谢你们!
答案 0 :(得分:4)
您需要使用堆栈来处理此问题。
当你找到一个新的左括号时,你会推到堆栈上。
当你找到一个右括号时,查看堆栈的顶部元素 - 看它是否匹配。即如果你刚刚找到一个“)”,那么堆栈中的最后一个元素是“(”?
如果是,则弹出该堆栈的元素。如果不是那么你有一个“不正确的”字符串,你可以停止进一步处理。
此外,一旦你到达字符串的末尾,如果堆栈上还剩下任何东西,我们知道有一个没有终止的括号。