Valid Parentheses

用一个栈存储字符串中的括号,每次读新的字符的时候,如果在栈顶发现有与它相匹配的括号,则从栈顶弹出,否则入栈。一次遍历之后,如果发现栈不为空,说明不匹配。

 1  bool isValid(string s) {
 2         // Start typing your C/C++ solution below
 3         // DO NOT write int main() function
 4         stack<char> aStack;
 5        int i, l = s.length();
 6         for(i = 0; i < l; i++){
 7             if(s[i] == '(' || s[i] == '[' || s[i] == '{')
 8                 aStack.push(s[i]);
 9             else if(s[i] == ')'){
10                 if(!aStack.empty() && aStack.top() == '(')
11                     aStack.pop();
12                 else {
13                     aStack.push(s[i]);
14                     break;
15                 }
16             }
17             else if(s[i] == ']'){
18                 if(!aStack.empty() && aStack.top() == '[')
19                     aStack.pop();
20                 else {
21                     aStack.push(s[i]);
22                     break;
23                 }
24             }
25             else if(s[i] == '}'){
26                 if(!aStack.empty() && aStack.top() == '{')
27                     aStack.pop();
28                 else {
29                     aStack.push(s[i]);
30                     break;
31                 }
32             }
33         }
34         if(aStack.empty())
35             return true;
36         return false;
37     }

 

posted on 2013-09-30 19:58  waruzhi  阅读(151)  评论(0编辑  收藏  举报

导航