【算法速刷(5/100)】LeetCode —— 20.有用的括号

[复制链接]
发表于 2026-2-13 00:24:32 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×

标题要求比力明白简便,编码难度并不算高
下面贴出代码和思绪
  1. bool isValid(string s) {
  2.         stack<char> stk;
  3.         for(const char& c : s)
  4.         {
  5.             if(stk.empty())
  6.             {
  7.                 stk.push(c);
  8.                 continue;
  9.             }
  10.             if(c == '(' || c == '[' || c == '{')
  11.             {
  12.                 stk.push(c);
  13.                 continue;
  14.             }
  15.             else
  16.             {
  17.                 char top = stk.top();
  18.                 bool isMatch =  (top == '(' && c == ')') ||
  19.                                 (top == '[' && c == ']') ||
  20.                                 (top == '{' && c == '}');
  21.                 if(!isMatch)
  22.                     return false;
  23.                 stk.pop();
  24.             }
  25.         }
  26.         return stk.empty();
  27.     }
复制代码
利用栈可以快速解答本题
紧张聚焦在以下几点:
遍历过程中:
        栈为空:无脑允许进栈
        栈不为空:举行条件判定
                是左括号:无脑进栈
                是右括号:查抄是否匹配栈顶括号
                        不匹配直接返回false
                        匹配就弹出栈顶
遍历竣事后:
        栈为空:返回true
        栈不为空:尚有剩余括号,返回false
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表