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

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

时间:2024-02-04 16:35:00浏览次数:32  
标签:第十一天 删除 括号 重复 随想录 len 字符串 求值 stack

 

有效的括号

  已解答 简单  

相关标签

相关企业  

提示

 

给定一个只包括 '('')''{''}''['']' 的字符串 s ,判断字符串是否有效。

有效字符串需满足:

  1. 左括号必须用相同类型的右括号闭合。
  2. 左括号必须以正确的顺序闭合。
  3. 每个右括号都有一个对应的相同类型的左括号。

 

示例 1:

输入:s = "()"
输出:true

示例 2:

输入:s = "()[]{}"
输出:true

示例 3:

输入:s = "(]"
输出:false

 

提示:

  • 1 <= s.length <= 104
  • s 仅由括号 '()[]{}' 组成

 


func isValid(s string) bool { varstack []byte fori := 0; i < len(s); i++ { if s[i] == '(' || s[i] == '[' || s[i] == '{' { stack = append(stack, s[i]) } else { iflen(stack) == 0 { returnfalse } val := stack[len(stack)-1] stack = stack[:len(stack)-1] if (s[i] == ')' && val != '(') || (s[i] == ']' && val != '[') || (s[i] == '}' && val != '{') { returnfalse } } } returnlen(stack) == 0 }

 


 

1047. 删除字符串中的所有相邻重复项

  已解答 简单  

相关标签

相关企业  

提示

 

给出由小写字母组成的字符串 S重复项删除操作会选择两个相邻且相同的字母,并删除它们。

在 S 上反复执行重复项删除操作,直到无法继续删除。

在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。

 

示例:

输入:"abbaca"
输出:"ca"
解释:
例如,在 "abbaca" 中,我们可以删除 "bb" 由于两字母相邻且相同,这是此时唯一可以执行删除操作的重复项。之后我们得到字符串 "aaca",其中又只有 "aa" 可以执行重复项删除操作,所以最后的字符串为 "ca"。

 

提示:

  1. 1 <= S.length <= 20000
  2. S 仅由小写英文字母组成。

func removeDuplicates(s string) string { varstack []byte fori := 0; i < len(s); i++ { varisEqualbool forlen(stack) > 0 && s[i] == stack[len(stack)-1] { stack = stack[:len(stack)-1] isEqual = true } if !isEqual { stack = append(stack, s[i]) } } returnstring(stack) }

 


1047. 删除字符串中的所有相邻重复项

  已解答 简单  

相关标签

相关企业  

提示

 

给出由小写字母组成的字符串 S重复项删除操作会选择两个相邻且相同的字母,并删除它们。

在 S 上反复执行重复项删除操作,直到无法继续删除。

在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。

 

示例:

输入:"abbaca"
输出:"ca"
解释:
例如,在 "abbaca" 中,我们可以删除 "bb" 由于两字母相邻且相同,这是此时唯一可以执行删除操作的重复项。之后我们得到字符串 "aaca",其中又只有 "aa" 可以执行重复项删除操作,所以最后的字符串为 "ca"。

 

提示:

  1. 1 <= S.length <= 20000
  2. S 仅由小写英文字母组成。

func removeDuplicates(s string) string { varstack []byte fori := 0; i < len(s); i++ { iflen(stack) != 0 && stack[len(stack)-1] == s[i]{ stack = stack[:len(stack)-1] }else{ stack = append(stack, s[i]) } } returnstring(stack) }

标签:第十一天,删除,括号,重复,随想录,len,字符串,求值,stack
From: https://www.cnblogs.com/suxinmian/p/18006457

相关文章

  • 代码随想录 day39 不同路径 不同路径 II
    不同路径这题由于说明了只能向下和向右那么对于终点而言显然只能由[i][j-1]+[i-1][j]种路线这就是状态转移方程那么初始值要赋予的就是上边和左边都是一也就是直接从边边到达重点的这样就保证我们的状态转移方程有数值可以将计算不同路径II这题难解的点在于障......
  • 代码随想录算法训练营第十一天| 20. 有效的括号 1047. 删除字符串中的所有相邻重复
    20.有效的括号 给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右括号都有一个对应的相同类型的左括号。题目链接:20.有效的括号-力扣(LeetCode)思路:只......
  • 代码随想录 da38 斐波那契数 爬楼梯 使用最小花费爬楼梯
    斐波那契数本题非常简单只是熟悉动态规划的基本流程爬楼梯本题是上题的略微扩展,本题没有明确给出状态转移方程和初始值这里的想法是到第i层需要先到第i-1层或者第i-2层那么实际上第i层的到达方法数就是第i-1层和第i-2层的到达方法数的和使......
  • 代码随想录算法训练营第十天| 堆栈理论基础 232.用栈实现队列 225. 用队列实现栈
    堆栈理论基础 代码随想录(programmercarl.com)STL中栈往往不被归类为容器,而被归类为containeradapter(容器适配器)。栈的内部结构,栈的底层实现可以是vector,deque,list都是可以的,主要就是数组和链表的底层实现。我们常用的SGISTL,如果没有指定底层实现的话,默认是以deque为缺......
  • day27 代码随想录算法训练营 40. 组合总和 II
    题目:40.组合总和II我的感悟:只要在路上就不怕走的慢。卡尔的视频慢慢听0.75倍听还是可以的。只要状态好,就可以学。多学会鼓励理解难点:代码难点:①notused[i-1]等同于used[i-1]==0 这里用的是True和False,所以用的是notused[i-1]②i>0为了防止i-1越界③剪枝......
  • 代码随想录算法训练营第九天| 28. 实现 strStr() 459.重复的子字符串 字符串总结 双
     28.实现strStr()给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从0开始)。如果 needle 不是 haystack 的一部分,则返回  -1 。题目链接:28.找出字符串中第一个匹配项的下标-力扣(LeetCode)思路:标......
  • 代码随想录 day37 单调递增的数字 监控二叉树
    单调递增的数字只想到暴力解法然后超时这里思路是如果从后往前发现不是递增序列那就把前一位--后一位数字变成9然后维护这个变成9的坐标遍历完后把后面的也全部变成9这个对现在的我来说太难了先贴段代码理解一下吧classSolution{intres=0;publicintminCam......
  • 代码随想录算法训练营第四天 |24. 两两交换链表中的节点 | 19.删除链表的倒数第N个节
    142.环形链表II 已解答中等 相关标签相关企业 给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。为了表示给定链表中的环,......
  • 代码随想录算法训练营第八天| 344.反转字符串 541. 反转字符串II 卡码网:54.替换数字
    反转字符串编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用O(1)的额外空间解决这一问题。题目链接:344.反转字符串-力扣(LeetCode)关于是否用reverse函数解决问题:如果题目......
  • 代码随想录 day36 无重叠区间 划分字母区间 合并区间
    无重叠区间这里的思路是找到有几个非重叠区间然后总数减去非重叠区间就是剩下的重叠区间数首先排好序按左或者右都可以这里按左排好然后发现边界不重叠就++边界重叠那么由于左边界优先对齐了所以右边界更新作为一个新的整体区间和下一个区间比较划分字母区间......