給定乙個只包括 '(',')','','[',']' 的字串 s ,判斷字串是否有效。
有效字串需滿足:
左括號必須用相同型別的右括號閉合。
左括號必須以正確的順序閉合。
示例 1:
輸入:s = "()"
輸出:true
示例 2:
輸入:s = "(){}"
輸出:true
示例 3:
輸入:s = "(]"
輸出:false
示例 4:
輸入:s = "([)]"
輸出:false
示例 5:
輸入:s = ""
輸出:true
好像沒有什麼暴力pj的方法,只能使用棧。
直接貼乙個題解,非常清晰,可以說是非常清晰了
這個解法已經十分清晰了,基本只要知道棧的 「先入後出」原則,明白棧頂棧底的概念,進棧出棧的概念就能直接看懂。
class solution
else if(c=='');
}else if(c=='[')
//如果不是右括號,則棧頂元素出棧
//因為按照上述遍歷方式,順序遍歷到左括號,右括號就進棧的方式,棧裡元素正常出棧就是符合結果的標準答案
//到此else if 則必然是遍歷到了右括號,而出棧元素就是正確答案,因此,對比即可
//若棧空或者棧內元素出棧與當前右括號不同,則錯誤
else if(stack.isempty()||stack.pop()!=c)
}//括號一一對應,遍歷完成後,棧應該為空,空 1 對, 非空 0 錯
return stack.isempty();}}
棧操作:pop()出棧 push()進棧 20 有效括號
1.題目描述 給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。2.示例 輸入 輸出 true輸入 輸出 false3.思路 可以採用棧來解決,第一步 判斷棧是否空,為空則進乙個括號,若不為空,則判斷當前括號和棧頂元素是否匹配,不...
20 有效的括號
給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。注意空字串可被認為是有效字串。示例 1 輸入 輸出 true示例 2 輸入 輸出 true示例 3 輸入 輸出 false示例 4 輸入 輸出 false示例 5 輸入 輸出 tr...
20 有效的括號
給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。注意空字串可被認為是有效字串。示例 1 輸入 輸出 true示例 2 輸入 輸出 true示例 3 輸入 輸出 false示例 4 輸入 輸出 false示例 5 輸入 輸出 tr...