一、題目解析
對于這個字符串需要左右括號匹配,并且是以正確的順序
二、算法原理
解法1.圖+棧
解法2.用else if代替圖+棧
正常做法:對于三種左括號直接進棧('(','[','{'進棧),然后判斷與下一個括號是否匹配,匹配則出棧,不匹配則返回false。
改進:當遇到三種左括號時,可以進棧對應的右括號(')',']','}'進棧),然后判斷與下一個括號是否相同,當棧為空或者棧頂元素括號不匹配時,返回false,然后出棧。
最后返回值為棧是否為空,為空則返回true,所有括號匹配完,反之為false。
思考過后可以自己實現一下,鏈接:20. 有效的括號 - 力扣(LeetCode)
三、代碼示例
class Solution {
public:bool isValid(string s) {stack<char> k;for(auto e : s){if(e == '(') k.push(')');else if(e == '[') k.push(']');else if(e == '{') k.push('}');else{if(k.empty() || k.top() != e) return false;k.pop();}}return k.empty();}
};
?
?
看到最后,如果對您有所幫助,還請點贊、收藏和關注,點點關注不迷路,我們下期再見!?