有效括号
(哈希表、unordered_map、栈stack)
class Solution {
public:
bool isValid(string s) {
int n = s.size();
if (n % 2 == 1) {
return false;
}
unordered_map<char, char> pairs = {
{')', '('},
{']', '['},
{'}', '{'}
};//左边的是键key(相当于数组的下标)、右边是元素
stack<char> stk;
//这里的for(char c:char s)就是定义一个遍历字符c,
//让它分别等于字符串数组char s里面的各个字符,
//然后执行下面的语句,当c被赋值为chars里面所有字符各一次后,就会退出这个循环.
for (char ch: s) {
if (pairs.count(ch)) {//返回key为ch的元素个数(unordered_map中只能为1)
if (stk.empty() || stk.top() != pairs[ch]) {//pairs[ch]返回key为ch的元素
return false;
}
stk.pop();
}
else {
stk.push(ch);
}
}
return stk.empty();
}
};