class Solution { public: bool isValid(string s) { if(s.empty()) return false; stack<int> s1; int n=s.size(); for(int i=0;i<n;i++) { if(s[i]==‘(‘||s[i]==‘[‘||s[i]==‘{‘) s1.push(s[i]); else if(s1.empty()) return false; else if((s[i]==‘)‘&&s1.top()==‘(‘)||(s[i]==‘]‘&&s1.top()==‘[‘)||(s[i]==‘}‘&&s1.top()==‘{‘)) s1.pop(); else return false; } if(s1.empty()) return true; else return false; } };
此题的思路是:最前面的左括号要和最后面的右括号匹配,所以是一种先进后出的思想,使用堆栈最方便,且要注意括号的顺序,不能出现交叉的情况。
我在leetcode上做的时候,一开始没有注意到函数的返回值是bool,自己随便return值,所以出现了wrong answer,修改为返回false和true之后就正确了,细节要注意。
时间: 2024-10-14 01:50:20