力扣:有效的括号

编程入门 行业动态 更新时间:2024-10-26 17:24:11

力扣:有效的<a href=https://www.elefans.com/category/jswz/34/1767470.html style=括号"/>

力扣:有效的括号

自己编写的代码 。

自己的思路:

class Solution {
private:unordered_map<char,int>symbolValues={{'(',1},{')',2},{'{',4},{'}',5},{'[',8},{']',9},        };public:bool isValid(string s) {bool flag=false;int  lens=s.length();if (lens % 2 != 0){flag = false;}for(int i=0;i<lens;i+=2){int value = symbolValues[s[i]];int value1 = symbolValues[s[i+1]];if(value>=value1||value1-value!=1){   int n=(lens/2);               if(symbolValues[s[n]]-symbolValues[s[n-1]]!=1){flag =  false;}}}return flag;}
};

官方解答:

讲一下思路吧这里定义了一个map,都是字符类型的,对应了键和值的操作。定义了一个栈,这个栈是一个线性结构,开始遍历,目前还是不知道这里为什么用for(char ch:s),然后去搜索,得到参考文档[1]。创建一个char 的字符串类型,去遍历字符串s。这里的if(pairs.count(ch))如果

stack<char>stk 语句参考文档[2] .

这里pairs.count(ch)是此算出ch在pais.出现的次数。

如果是右括号,就返回1,左括号返回0.GPT搭的好像不是很对,然后如果是右括号,就进入如下判断,首先判断这个容器是是否为空栈或者栈顶不等于当前键和值,栈顶的元素,比如(要与)配对即stk.top() == pairs[ch] ,如果不是一对就返回false,

心得:这道题利用了栈的后进先出的原理。

 

[1]C++ for(char c:s)遍历字符串 增强型for循环_c++增强for循环_龙叙的博客-CSDN博客 

 [2]C++之Stack容器初学-CSDN博客

class Solution {
public:bool isValid(string s) {int n = s.size();if (n % 2 == 1) {return false;}unordered_map<char, char> pairs = {{')', '('},{']', '['},{'}', '{'}};stack<char> stk;for (char ch: s) {if (pairs.count(ch)) {if (stk.empty() || stk.top() != pairs[ch]) {return false;}stk.pop();}else {stk.push(ch);}}return stk.empty();}
};

更多推荐

力扣:有效的括号

本文发布于:2023-11-16 17:31:38,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1630511.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:括号   力扣

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!