20. Valid Parentheses

problem

solution

經典題目,利用stack 將( [ { push 進去,如果不是左半部括號,則檢查stack 頂部是否為相對應的右半部括號,如果不是return false,如果是pop,並繼續遍歷string

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Solution {
public:
bool isValid(string s) {
stack<char> sta;
for(char c:s){
if(c=='(' || c=='[' || c=='{') sta.push(c);
else{
if(sta.empty()) return false;
else if(c==')' && sta.top() == '(') sta.pop();
else if(c==']' && sta.top() == '[') sta.pop();
else if(c=='}' && sta.top() == '{') sta.pop();
else return false;
}
}
return sta.empty();
}
};

analysis

  • time complexity O(n)
  • space complexity O(n)