又来到每天必备的leetcode刷题日记啦,今天我们暂时不说链表问题,来讲讲栈的leetcode题目吧。前几天博主发了几篇栈的实际应用实例。然后我们今天趁热打铁来看看栈的leetcode题。在刷题的时候,博主偶然发现一道和前几天发的《栈应用之括号匹配》相识的题,下面一起来看看吧
上题目:
(看起来是不是很熟悉啊)
解题方法:
class Solution {
public:
bool isValid(string s)
{
int n = s.size();//求出字符串的大小
if (n % 2 == 1)
{
return false;//奇数肯定不能成对匹配
}
unordered_map<char, char> pairs = {
{')', '('},
{']', '['},
{'}', '{'}
};// unordered_map是map的进阶版,这里简单当map看就可以啦
stack<char> stk;//创建一个栈
for (char ch: s)//这个循环意思就是从字符串s中依次取出元素赋值给字符类型ch。
{
if (pairs.count(ch))//对组不为空就运行
{
if (stk.empty() || stk.top() != pairs[ch])
{
return false;
}
stk.pop();//取出栈的头元素
}
else {
stk.push(ch);//取出栈的尾元素
}
}
return stk.empty();//返回布尔类型的值,若为空返回true
}
};
本贴为博主亲手整理。如有错误,请评论区指出,一起进步。谢谢大家的浏览.