[20]括号匹配

/LeetCode: 20 Valid ParenthesesDescription:Given a string s containing just the characters ‘(‘, ‘)’, ‘{‘, ‘}’, ‘[‘ and ‘]’, determine if the input string is valid.
An input string is valid if:Open brackets must be closed by the same type of brackets.Open brackets must be closed in the correct order.
/#include using namespace std;/思路:0. 判断括号有效性,利用栈和哈希表进行遍历访问。1. 关键规则:后遇到的左括号先闭合,因此可以将左括号放入栈顶2. 遇到右括号时,取出栈顶的左括号判断能否闭合, 若不是相同类型 或 栈中没有左括号,判定字符串无效3. 利用哈希表存储映射关系,键为右括号,值为相同类型的左括号4. 若栈中没有左括号,返回True,否则返回False5. 由左右括号的成对匹配关系,字符串长度为奇数时,直接返回False /class Solution {public: bool isValid(string s) { if (s.size() % 2 == 1) return false; map bracketPair = { {‘}’,’{‘}, {‘]’,’[‘}, {‘)’,’(‘} }; stack leftBrct; for (char c : s) { if (bracketPair.count(c)){//判断字符 c 是否在Hashmap的key中出现,对于hashmap来说,count返回值为0 ,1 if (leftBrct.empty() || leftBrct.top() != bracketPair[c]) { return false; } leftBrct.pop(); } else { leftBrct.push(c); } } return leftBrct.empty(); }};int main() {
return 0;}