首页 > 代码库 > leetcode题解:Valid Parentheses(栈的应用-括号匹配)
leetcode题解:Valid Parentheses(栈的应用-括号匹配)
题目:
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.
说明:
1)括号可嵌套,如{[()]}
实现:
1 class Solution { 2 public: 3 bool isValid(string s) { 4 if(s.empty()) return false;//空字符串,false 5 int len=strlen(s.c_str()); 6 if(len==1) return false;//只有一个字符,false 7 char pre; 8 stack<char> char_stack; 9 for(int i=0;i<len;i++)10 {11 if(isPop(s[i])) //该出栈顶元素12 {13 if(!char_stack.empty())14 {15 pre=char_stack.top();//取栈顶元素、并出栈16 char_stack.pop();17 if(!isChar(pre,s[i]))//是否匹配18 return false;19 }20 else return false;21 }22 else //入栈23 {24 char_stack.push(s[i]);25 }26 }27 return char_stack.empty();//栈空true,否则false28 }29 private:30 bool isPop(char t) //判断是否是)} ]符号,是则出栈栈顶元素31 {32 if(t==‘)‘||t==‘}‘||t==‘]‘)33 return true;34 else 35 return false;36 }37 bool isChar(char t1,char t2)//判断两字符t1,t2是否匹配38 {39 switch (t1)40 {41 case ‘(‘:42 {43 if(t2==‘)‘) return true;44 else return false;45 break;46 }47 case ‘{‘:48 {49 if(t2==‘}‘) return true;50 else return false;51 break;52 }53 case ‘[‘:54 {55 if(t2==‘]‘) return true;56 else return false;57 break;58 }59 default: 60 return false;61 }62 }63 };
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。