首页 > 编程语言 >代码随想录算法训练营第十天| 20. 有效的括号 1047. 删除字符串中的所有相邻重复项 150. 逆波兰表达式求值

代码随想录算法训练营第十天| 20. 有效的括号 1047. 删除字符串中的所有相邻重复项 150. 逆波兰表达式求值

时间:2023-06-18 15:34:32浏览次数:43  
标签:case return 第十天 随想录 char 括号 求值 20 left

20. 有效的括号  

特点:

左括号之后,可能还会有左括号,但是只要有右括号,那么它必须立刻和最近的左括号

代码:

 1 char returnRightChar(char &c)
 2 {
 3     switch (c)
 4     {
 5     case '[': return ']';
 6     case '(': return ')';
 7     case '{': return '}';
 8     }
 9 
10     return NULL;
11 }
12 bool isValid(string s) 
13 {
14     stack<char> left;
15     
16     for (char c : s)
17     {
18         if (c == '[' || c == '(' || c == '{')
19         {
20             left.push(c);
21         }
22         else 
23         {
24             if (!left.empty()&&c == returnRightChar(left.top()))
25             {
26                 left.pop();
27             }
28             else {
29                 return false;
30             }
31             
32         }
33         
34     }
35 
36     return left.empty();
37 }

 

标签:case,return,第十天,随想录,char,括号,求值,20,left
From: https://www.cnblogs.com/smartisn/p/17489186.html

相关文章

  • 代码随想录Day24|回溯算法+JAVA大作战
     今日任务39. 组合总和40.组合总和II131.分割回文串 93.复原IP地址  78.子集   90.子集II   39.组合总和classSolution{List<List<Integer>>ans=newArrayList<>();LinkedList<Integer>now_ans=newLinkedList<>();publicLi......
  • 代码随想录day08
     第四章 字符串part01344.反转字符串 541. 反转字符串II 剑指Offer 05.替换空格 151.翻转字符串里的单词 剑指Offer58-II.左旋转字符串344.反转字符串 classSolution{publicvoidreverseString(char[]s){//双指针法依次交换首尾两个fo......
  • 代码随想录算法训练营第九天| 232.用栈实现队列 225. 用队列实现栈
    232.用栈实现队列注意:1,构造函数不需要2,需要有两个成员变量inout代码:1classMyQueue{2public:3stack<int>in;4stack<int>out;5MyQueue(){67}89voidpush(intx){10in.push(x);11}1213intpop(){1......
  • 表达式求值
    栈的应用—表达式求值表达式通常由三部分组成:①操作数②运算符③界限符(括号等)常见表达式有以下几种:中缀表达式:\(a+b\)、\(a\backslashb\)、\(a+b-c\)、\(a+b-c*d\)特点:运算符在两个数中间后缀表达式(逆波兰表达式):\(ab+\)、\(ab\backslash\)、\(ab+c-\)、\(ab+cd*-\)......
  • 代码随想录算法训练营第八天| 28. 实现 strStr() 459.重复的子字符串
    28.实现strStr()  难点:1,制作KMP算法2,next数组要求的是,找到的下标:0/s[i]==s[j]才可以跳出来代码:1vector<int>getNextList(stringneedle)2{3vector<int>next(needle.size());4intj=0;5next[0]=0;67for(inti=1;i......
  • 表达式求值
    栈的应用—表达式求值表达式通常由三部分组成:①操作数②运算符③界限符(括号等)常见表达式有以下几种:中缀表达式:\(a+b\)、\(a\backslashb\)、\(a+b-c\)、\(a+b-c*d\)特点:运算符在两个数中间后缀表达式(逆波兰表达式):\(ab+\)、\(ab\backslash\)、\(ab+c-\)、\(ab+cd*-\)......
  • 代码随想录算法训练营第七天| 344.反转字符串 、 541. 反转字符串II、 剑指Offer 05.
     344.反转字符串代码:1voidreverseString(vector<char>&s){23inti=0;4intj=s.size()-1;5while(i<j)6{7charmid=s[i];8s[i]=s[j];9s[j]=mid;1011i++;12......
  • 代码随想录day07
    第三章 哈希表part02454.四数相加II 383. 赎金信 15. 三数之和 18. 四数之和 454.四数相加II 思路:采用分为两组,HashMap存一组,另一组和HashMap进行比对。首先求出A和B任意两数之和sumAB,以sumAB为key,sumAB出现的次数为value,存入hashmap中。然后计算......
  • 代码随想录算法训练营第六天| 454.四数相加II 383. 赎金信 15. 三数之和 18. 四数
    454.四数相加II1,难点:1,多个数组之间,会有重复出现的数组,如果单用multiset也是会出错的2,如果用mutliset,在使用distance找出来equal_range的值的时候,也是会出现奇怪的错误的2,正确思路1,把重复出现的节点,次数存放到map种,然后进行遍历3,代码:1intfourSumCount(v......
  • 代码随想录算法训练营第24天 | ● 理论基础 ● 77. 组合 - 第7章 回溯算法part01
     第七章 回溯算法part01今日内容: ●  理论基础 ●  77. 组合    详细布置   理论基础  其实在讲解二叉树的时候,就给大家介绍过回溯,这次正式开启回溯算法,大家可以先看视频,对回溯算法有一个整体的了解。 题目链接/文章讲解:https://programmercar......