Create 20. Valid Parentheses.md

This commit is contained in:
唐树森 2018-10-05 23:14:33 +08:00 committed by GitHub
parent fdbb097d66
commit 55b2318fce
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

30
20. Valid Parentheses.md Normal file
View File

@ -0,0 +1,30 @@
# [20. Valid Parentheses](https://leetcode.com/problems/valid-parentheses/description/)
# 思路
用一个栈来存放左括号每次遇到左括号就将其入栈遇到右括号就查看是否与栈顶元素配对若能配对则pop栈顶元素继续下一循环否则返回false。
退出循环后若栈不空说明还剩下未配对的左括号则应该返回false。
时间复杂度O(n), 空间复杂度O(n)
# C++
```
class Solution {
private:
bool isLegal(const char& a, const char&b){
if(a == '(' && b == ')') return true;
if(a == '[' && b == ']') return true;
if(a == '{' && b == '}') return true;
return false;
}
public:
bool isValid(string s) {
stack<char>stk;
for(int i = 0; i < s.size(); i++){
if(s[i] == ')' || s[i] == '}' || s[i] == ']'){
if(stk.empty() || !isLegal(stk.top(), s[i])) return false;
stk.pop();
}
else stk.push(s[i]);
}
if(!stk.empty()) return false;
return true;
}
};
```