力扣678.有效的括号字符串
-
用两个栈分别存’ ( ‘和‘ * ’的下标
- ‘ ) ’ 与二者匹配
- 最后将‘ ( ’与 ‘ * ’匹配
-
class Solution { public: bool checkValidString(string s) { stack<int> st1,st2; int n = s.size(); for(int i=0;i<n;i++) { char c= s[i]; if(c == '(') st1.push(i); else if(c == '*') st2.push(i); else { if(!st1.empty()) st1.pop(); else if(!st2.empty()) st2.pop(); else return false; } } while(!st1.empty() && !st2.empty()) { int l = st1.top(); st1.pop(); int r = st2.top(); st2.pop(); if(l > r) return false; } return st1.empty(); } };