马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
力扣2116.判断一个括号字符串是否有效
- 双栈模拟
- 一个锁栈,一个非锁栈
- 碰到锁)时,优先匹配锁栈的(
- class Solution {
- public:
- bool canBeValid(string s, string locked) {
- if(s.size() % 2 != 0) return false;
- stack<int> free_stk;
- stack<int> lock_stk;
- for(int i=0;i<s.size();i++)
- {
- if(locked[i] != '1')
- free_stk.push(i);
- else
- {
- if(s[i] == ')')
- {
- //优先匹配锁栈
- if(!lock_stk.empty()) lock_stk.pop();
- else if(!free_stk.empty()) free_stk.pop();
- else return false;
- }
- else
- lock_stk.push(i);
- }
- }
- //最后处理所有锁的(
- //处理完剩下的非锁栈元素一定可以自己匹配完
- while(!free_stk.empty() && !lock_stk.empty())
- {
- if(free_stk.top() < lock_stk.top()) return false;
- free_stk.pop(),lock_stk.pop();
- }
- return lock_stk.empty();
- }
- };
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |