标签:
#include<iostream> #include<string> #include <stack> using namespace std; char change_char(char a) { switch(a) { case ‘(‘:{return ‘)‘;break;} case ‘)‘:{return ‘(‘;break;} case ‘{‘:{return ‘}‘;break;} case ‘}‘:{return ‘{‘;break;} case ‘[‘:{return ‘]‘;break;} case ‘]‘:{return ‘[‘;break;} } } /*采用堆栈的方法,在是前括号时将其压入到堆栈中,是反括号时进行匹配 */ bool isValid(string s) { stack<char> str_temp; if(s[0]==‘(‘||s[0]==‘[‘||s[0]==‘{‘) str_temp.push(s[0]); else return 0; int i=1; int len=s.size(); while(i<len) { if(s[i]==‘(‘||s[i]==‘[‘||s[i]==‘{‘)//是前括号 {str_temp.push(s[i]);i++;} else//是反括号 { if(str_temp.empty())//栈里为空 return 0; else { if(str_temp.top()!=change_char(s[i]))//不匹配 return 0; str_temp.pop(); i++; } } } if(str_temp.empty())//栈中是否为空 return 1; else return 0; } int main() { string s="()"; cout<<isValid(s)<<endl; system("pause"); return 1; }
leetcode_20题——Valid Parentheses(string,stack堆栈)
标签:
原文地址:http://www.cnblogs.com/yanliang12138/p/4440979.html