当前位置: 首页 > news >正文

Leetcode20. 有效的括号(HOT100)

链接

我的错误代码:

class Solution {stack<char> s;
public:bool isValid(string s) {for(auto ch:s){if(!s.empty()||s.top()!=ch){s.push(ch);}else{s.poo();}}return s.empty()?true:false;}
};//___________________class Solution {
public:bool isValid(string a) {stack<char> s;for(auto ch:a){if(ch=='{'||ch=='('||ch=='['){s.push(ch);}else{if(!s.empty()&&ch-s.top()<=2){s.pop();}else{break;}}}return s.empty()?true:false;}
};
//()  []   {}每一对之间两个字符的Ascii码值相差分别为1 2 2 ,所以我们考虑使用Ascii来判断是否匹配//______________________错误原因是不要跳出来,直接return false即可,跳出来判断的是stack是否为空,反而导致错误class Solution {
public:bool isValid(string a) {stack<char> s;for(auto ch:a){if(ch=='{'||ch=='('||ch=='['){s.push(ch);}else{if(!s.empty()&&ch-s.top()<=2){s.pop();}else{return false;}}}return s.empty();}
};//判断Ascii的方式不靠谱,因为)-{的Ascii码值是负数,小于等于2,误判为合法,但是其实不合法

正确的代码:

class Solution {
public:bool isValid(string a) {stack<char> s;for(auto ch:a){if(ch=='{'||ch=='('||ch=='['){s.push(ch);}else{if(!s.empty()&&abs(ch-s.top())<=2){s.pop();}else{return false;}}}return s.empty();}
};

abs(ch-s.top)),取绝对值即可判断右括号对应的左括号是否在附近,如果在附近(<=2)即合法,因为除了这六种括号外也没其他字符了。

有人可能会说了:如果出现}{这种怎么办?

注意:我们的代码会在出现}时判断之前是否出现过与它配对的字符。如果没有,直接return false;
 


http://www.mrgr.cn/news/78748.html

相关文章:

  • taro小程序马甲包插件
  • vulnhub-LUPINONE-靶场复盘-题解
  • MongoDB集群分片安装部署手册
  • 【Spring源码核心篇-07】spring事物传播机制的流程和原理
  • AnolisOS8基于yum安装mongodb6
  • 算法的复杂度
  • FUSU: 多源多时相土地利用变化分割数据集
  • CTF中可能遇到的php函数
  • 数据分析自动化工具对比指南Cursor Composer和Google Data Science Agent
  • Hadoop批量计算实验
  • spring知识点复习--针对面试的
  • 计算机基础 原码反码补码问题
  • sizeof和strlen区分,(好多例子)
  • 【Python中while循环】
  • Python的字符串编码
  • 二十一、QT C++
  • 从扩散模型开始的生成模型范式演变--SDE(1)
  • 异步处理优化:多线程线程池与消息队列的选择与应用
  • java面试复习
  • MATLAB期末复习笔记(上)
  • 网络地址转换
  • 阿里云服务器(centos7.6)部署前后端分离项目(MAC环境)
  • winScp连接Ubantu系统,访问拒绝的解决方式
  • 【超全总结】深度学习分割模型的损失函数类别及应用场景
  • 小米澎湃OS2跟蜂窝网络相关的设置和调试【功能设计】
  • HTTP 探秘之旅:从入门到未来