🔥前言
本专栏收录的均为牛客网的算法题目,内含链表、双指针、递归、动态规划、基本数据结构等算法思想的具体运用。牛客网不仅有大量的经典算法题目,也有大厂的面试真题,面试、找工作完全可以来这里找机会。此外,网站内的编码主题多样化,调试功能可运用性强,可谓是非常注重用户体验。这么好的免费刷题网站还不快入手吗,快去注册开启算法百炼成神之路吧!
1、AB3 有效括号序列
题目链接:有效括号序列
题目描述:
1.1、解题思路
采用右括号入栈的思想:
对s字符串进行遍历,如果是字符'('、'['、'{'那就把其对应的右括号入栈。
如果不是这些左括号,那就让该字符与辅助栈顶比较,如果不相等说明不匹配:
这里要先判断辅助栈是否为空,若为空,说明先前没有左括号入栈。
如果字符与辅助栈顶相等,那就进行出栈操作,最后返回栈的empty方法即可。
1.2、代码实现与解析
本题源码:
class Solution { public: /** * * @param s string字符串 * @return bool布尔型 */ bool isValid(string s) { //辅助栈 stack<char> stk; for (int i = 0; i < s.length(); i++) { if (s[i] == '(') stk.push(')'); else if (s[i] == '[') stk.push(']'); else if (s[i] == '{') stk.push('}'); else { if (stk.empty() || s[i] != stk.top()) return false; stk.pop(); } } return stk.empty(); } };
重要注释:
辅助栈需要字符型char,因为单个字符串可当作字符处理
如果遍历字符串是三种左括号,那就将对应右括号入栈
如果是右三种括号,判断栈是否为空或者是否与栈顶相等,不满足则出栈
如果empty方法为真,足以说明该字符串满足括号匹配