LeetCode --- Valid Parentheses

题目链接

Problem discription

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.

Accpted Code:

 1 class Solution {
 2 public:
 3     bool isValid(string s) {
 4         map<char, char> brackets;
 5         brackets['{'] = '}';
 6         brackets['['] = ']';
 7         brackets['('] = ')';
 8         // use a stack to store every left brackets
 9         stack<char> leftBracket;
10         // length of s
11         int len = (int)s.length();
12         
13         for (int i = 0; i < len; i++) { 
14             if (s[i] == '(' || s[i] == '[' || s[i] == '{') {
15                 leftBracket.push(s[i]);
16             } else {
17                 // there is no left bracket
18                 if (leftBracket.empty()) return false;
19                 char last = leftBracket.top();
20                 // the previous left bracket doesn't match s[i]
21                 if (brackets[last] != s[i]) return false;
22                 leftBracket.pop();
23             }
24         }
25         // if there are some  brackets left 
26         // not used(no right brackets to match them)
27         return leftBracket.empty();
28     }
29 };

 

posted on 2014-06-12 11:35  Stomach_ache  阅读(85)  评论(0编辑  收藏  举报

导航