题目
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/6c6ec48426e0589a89f3866b163caa2b.png)
Leetcode 20. 有效的括号
代码(首刷自解)
class Solution {
public:
bool isValid(string s) {
if(s.size() % 2 == 1)
return false;
unordered_map<char, char> map = {
{')', '('}, {'}', '{'}, {']', '['}
};
stack<char> sk;
for(char& c : s) {
if(c == '(' || c == '{' || c == '[')
sk.push(c);
else {
if(sk.empty() || map[c] != sk.top())
return false;
sk.pop();
}
}
return sk.empty() ? true : false;
}
};
代码(8.21 二刷自解)
class Solution {
public:
bool isValid(string s) {
if(s.size() % 2 == 1)
return false;
unordered_map<char, char> map{
{')', '('},
{']', '['},
{'}', '{'}
};
stack<char> sk;
for(char& c : s) {
if(map.find(c) != map.end()) {
if(sk.empty() || map[c] != sk.top())
return false;
sk.pop();
} else {
sk.push(c);
}
}
return sk.empty();
}
};
代码(9.6 三刷自解)
class Solution {
public:
bool isValid(string s) {
if(s.size()%2)
return false;
unordered_map<char, char> mp = {{')', '('}, {']', '['}, {'}', '{'}};
stack<char> sk;
for(char& c : s) {
if(c == ')' || c == '}' || c == ']') {
if(sk.empty() || sk.top() != mp[c]) {
return false;
}
sk.pop();
} else {
sk.push(c);
}
}
return sk.empty();
}
};