leetcode#20-有效的括号

tech2023-01-10  123

class Solution { public: bool isValid(string s) { if(s.length()<=0) return true; stack<char> save; if(s[0]=='('||s[0]=='['||s[0]=='{') save.push(s[0]); else return false; int i=1; while(i<s.length()){ if(s[i]=='('||s[i]=='['||s[i]=='{') save.push(s[i]); else{ if(save.empty()) return false;//如果栈空了 if(s[i]==')' && save.top()!='(') return false; if(s[i]=='}' && save.top()!='{') return false; if(s[i]==']' && save.top()!='[') return false; save.pop(); } i++; } if(save.empty() && i>=s.length()) return true; else return false; } };

循环条件当字符串没有遍历完,如果当前字符时左括号,那么压栈,如果当前时右侧括号,此时如果栈空了,那么就返回false,如果栈顶不空,但是与右侧括号不匹配,那么也返回false,直到全部匹配,此时栈空,且i大于等于n。

最新回复(0)