leetcode之Valid Parentheses
阿新 • • 發佈:2018-12-12
題目:
Given a string containing just the characters '('
, ')'
, '{'
, '}'
, '['
and ']'
, determine if the input string is valid.
An input string is valid if:
- Open brackets must be closed by the same type of brackets.
- Open brackets must be closed in the correct order.
Note that an empty string is also considered valid.
程式碼:
#include<iostream> #include<set> #include<map> #include<stack> using namespace std; bool isValid(string s) { int len = s.size(); if (len == 0)return true; if (len % 2 != 0)return false; stack<char> cstack; map<char, char> m; m['('] = ')'; m['{'] = '}'; m['['] = ']'; set<char> left = { '(','{','[' }; if (!left.count(s[0]))return false; cstack.push(s[0]); char last = s[0]; for (int i = 1; i < len; i++) { if (left.count(s[i])) { cstack.push(s[i]); last = s[i]; } else if (s[i] == m[last]) { cstack.pop(); if (cstack.size() == 0)last='0'; else last = cstack.top(); } else return false; } if (cstack.size() != 0)return false; return true; } int main() { string s = "()[]{}"; bool m = isValid(s); cout << m << endl; return 0; }