pop 函数
用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的值。
push函数
将元素插入到某个结构末尾的函数。
遍历字符串的方法
for (char c : s)
首先要考虑数量问题,假如输入的括号是奇数个,那么一定是无法配对的
因为是相同类型的配对,想到哈希函数的特性,键值一一配对
括号配对的特性与栈的特性相同,先进后出,最外层的括号最后考虑,使用循环遍历字符串,遇到左括号进栈,然后检查哈希表是否有配对
class Solution {
public:
bool isValid(string s) {
int l=s.size();//字符串长度
if(l%2!=0)//奇数的情况不满足
{
return false;
}
unordered_map<char,char> pairs={//建立配对哈希表
{"(",")"},
{"{","}"},
{"[","]"}
}
stack<char>k;//建立栈
for(char ch:s){//遍历字符串
if(pairs.count(ch))
{
if(k.empty()||k.top()!=pairs[ch]){//弹出栈顶元素观察是否与哈希函数配对的相同
return false;
}
k.pop();//取出栈中元素
}
else
k.push();//向栈中压入元素
}
return k.empty();
}
};