LC20.ValidParentheses
题目
有效的括号
给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
每个右括号都有一个对应的相同类型的左括号。
题解
#include <iostream>
#include <stack>
#include <unordered_map>
#include <string>
class Solution
{
public:
bool isValid(std::string s)
{
if (s.size() % 2 != 0) return false;
std::unordered_map<char, char> table =
{
{')', '('}, {']', '['}, {'}', '{'}
};
std::stack<char> stk;
for (char ch : s)
{
if (table.count(ch))
{
if (stk.empty() || stk.top() != table[ch]) return false;
stk.pop();
}
else stk.push(ch);
}
return stk.empty();
}
};