Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid.
The brackets must close in the correct order, "()" and "()[]{}" are all valid but "(]" and "([)]" are not.
//20
#include<iostream>
#include<stack>
#include<string>
using namespace std;
class Solution {
public:
bool isValid(string s) {
//{[()]}
stack<char> auxiliary;
for(int i=0;i<s.size();i++){
if(s[i]=='{' ||s[i]=='[' ||s[i]=='('){
auxiliary.push(s[i]);
}else{
//left brackets<right brackets
if(auxiliary.size()==0){
return false;
}
char top=auxiliary.top();
auxiliary.pop();
char match;
switch(s[i]){
case'}':match='{';break;
case']':match='[';break;
case')':match='(';break;
default:break;
}
if(top !=match){
return false;
}
}
}
//stack still exist nums,left brackets>right brackets
if(auxiliary.size() !=0){
return false;
}
return true;
}
};
int main(){
string s="[]{}()";
cout<<Solution().isValid(s)<<endl;
}
网友评论