直接用栈实现
//C++
class Solution{
public:
bool isValid(string s){
stack<char> q;
for(int i=0;i<s.size();i++){
if(s[i]=='('||s[i]=='{'||s[i]=='[') q.push(s[i]);
else if(s[i]==')' || s[i]=='}' ||s[i]==']'){
if(q.empty())return false;
char temp = q.top();
q.pop();
if(s[i]==')'&&temp=='(')continue;
else if(s[i]=='}'&&temp=='{')continue;
else if(s[i]==']'&&temp=='[')continue;
else return false;
}
}
if(q.empty()) return true;
else return false;
}
};
Python 用栈实现
class Solution:
def isValid(self, s: str) -> bool:
l=[]
for i in s:
if i=='(' or i=='[' or i=='{':
l.append(i)
else:
if len(l)==0:
return False
t=l.pop()
if i==')' and t=='(': continue
elif i==']' and t=='[': continue
elif i=='}' and t=='{': continue
else: return False
if len(l)==0:return True
else:return False
Python 三行实现
class Solution:
def isValid(self,s: str) -> bool:
while "()" in s or "{}" in s or "[]" in s:
s= s.replace("()","").replace("{}","").replace("[]","")
return s==""