0%

20. Valid Parentheses

stack O(n) time O(n) space

1
2
3
4
5
6
7
8
9
10
11
12
13
14
d = {')': '(', '}': '{', ']': '['}

class Solution:
def isValid(self, s: str) -> bool:
stk = []
for c in s:
if c in d:
if not stk or d[c] != stk[-1]:
return False
else:
stk.pop()
else:
stk += c # 注意这里c是一个字符所以可以用+=
return not stk
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
unordered_map<char, char> m = {{')', '('}, {'}', '{'}, {']', '['}};
class Solution {
public:
bool isValid(string s) {
string stk;
for (char c : s) {
if (m.count(c)) {
if (!stk.empty() && stk.back() == m[c]) {
stk.pop_back();
} else return false;
} else {
stk += c;
}
}
return stk.empty();
}
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Solution {
public:
bool isValid(string s) {
unordered_map<char, char> hm{{')', '('}, {'}', '{'}, {']', '['}};
stack<char> stk;
for (auto c : s) {
if (hm.count(c)) {
if (stk.empty() || stk.top() != hm[c]) return false;
stk.pop();
} else {
stk.push(c);
}
}
return stk.empty(); // 注意最后要判空
}
};