678. 有效的括号字符串

678. 有效的括号字符串

给定一个只包含三种字符的字符串:( ,) 和 *,写一个函数来检验这个字符串是否为有效字符串。有效字符串具有如下规则:

  1. 任何左括号 ( 必须有相应的右括号 )。
  2. 任何右括号 ) 必须有相应的左括号 ( 。
  3. 左括号 ( 必须在对应的右括号之前 )。
    • 可以被视为单个右括号 ) ,或单个左括号 ( ,或一个空字符串。
  4. 一个空字符串也被视为有效字符串。
示例 1:输入: "()"
输出: True
示例 2:输入: "(*)"
输出: True
示例 3:输入: "(*))"
输出: True
注意:

字符串大小将在 [1,100] 范围内。

解题思路

使用贪心算法,维护一个左括号的最大值和最小值

  1. 当遇到(,左括号的数目加一,无论是最大值或者最小值
  2. 当遇到),左括号的数目减去一,无论是最大值或者最小值。如果最大值小于0了,说明即使把所有的*换成(,也无法满足)的需求
  3. 当遇到*,我们可以将其当成(或者),当成),就需要把最小值减去1,因为消掉了一个(。当成(,就需要把最大值加上1

代码

class Solution {public boolean checkValidString(String s) {int del=0,lMax=0,lMin=0,i=0,n=s.length();while(i<n){if(s.charAt(i)=='('){lMax++;lMin++;}else if(s.charAt(i)==')'){lMax--;lMin=Math.max(0,lMin-1);if(lMax<0)return false;}else {lMax++;lMin=Math.max(0,lMin-1);}i++;}return lMin==0;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/390079.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Faster R-CNN代码例子

主要参考文章&#xff1a;1&#xff0c;从编程实现角度学习Faster R-CNN&#xff08;附极简实现&#xff09; 经常是做到一半发现收敛情况不理想&#xff0c;然后又回去看看这篇文章的细节。 另外两篇&#xff1a; 2&#xff0c;Faster R-CNN学习总结 这个主要是解释了18,…

剥开比原看代码09:通过dashboard创建密钥时,前端的数据是如何传到后端的?

2019独角兽企业重金招聘Python工程师标准>>> 作者&#xff1a;freewind 比原项目仓库&#xff1a; Github地址&#xff1a;https://github.com/Bytom/bytom Gitee地址&#xff1a;https://gitee.com/BytomBlockchain/bytom 在前面一篇文章&#xff0c;我们粗略的研究…

面试题 17.24. 最大子矩阵

面试题 17.24. 最大子矩阵 给定一个正整数、负整数和 0 组成的 N M 矩阵&#xff0c;编写代码找出元素总和最大的子矩阵。 返回一个数组 [r1, c1, r2, c2]&#xff0c;其中 r1, c1 分别代表子矩阵左上角的行号和列号&#xff0c;r2, c2 分别代表右下角的行号和列号。若有多个…

js模拟form表单提交数据, js模拟a标签点击跳转,避开使用window.open引起来的浏览器阻止问题...

js模拟form表单提交数据, js模拟a标签点击跳转&#xff0c;避开使用window.open引起来的浏览器阻止问题 js模拟form表单提交数据源码&#xff1a; /** * js模拟form表单提交 * param {object} 参数对象 * url 必填 提交地址 * methond 选填 默认post 提交方…

004. ES6之函数的扩展

2019独角兽企业重金招聘Python工程师标准>>> 1. 函数参数的默认值 ES6 允许为函数的参数设置默认值&#xff0c; function log(x, y World) {console.log(x, y); }log(Hello) // Hello World log(Hello, China) // Hello China log(Hello, ) // Hello// 1. 参数变量…

数据结构 | 链表:1097 删除重复元素

代码提交之后一直说段错误。我以为是数组开的不够大&#xff0c;但是随着数组一点一点开大&#xff0c;还是有一个case没有AC。最终我发现&#xff1a;是有个边界条件没有考虑到 void printList(const vector<Node>& a){if(!a.size()) return;FF(i,a.size()-1){print…

算法之美 : 位运算

上一小节我们用三道题了解一下面试过程中栈和队列的常见面试题。本小节笔者将通过几个 位运算 的题目来带大家熟悉下常用的位运算知识。 相比于栈和队列来讲&#xff0c;笔者自身认为位运算需要掌握的知识就要多一些&#xff0c;包括对于数字的二进制表示&#xff0c;二进制的反…

447. 回旋镖的数量

447. 回旋镖的数量 给定平面上 n 对 互不相同 的点 points &#xff0c;其中 points[i] [xi, yi] 。回旋镖 是由点 (i, j, k) 表示的元组 &#xff0c;其中 i 和 j 之间的距离和 i 和 k 之间的距离相等&#xff08;需要考虑元组的顺序&#xff09;。 返回平面上所有回旋镖的…

一名3年工作经验的程序员应该具备的技能

本文转自:https://m.imooc.com/article/details?article_id7557 前言 因为和同事有约定再加上LZ自己也喜欢做完一件事之后进行总结&#xff0c;因此有了这篇文章。这篇文章大部分内容都是面向整个程序员群体的&#xff0c;当然因为LZ本身是做Java开发的&#xff0c;因此有一部…

js 排序算法总结

1.冒泡排序 平均时间复杂度O(N2) 最好情况O(N)最坏情况O(N2) 空间复杂度O(1) function bubbleSort(arr){if(arr.length < 1)return arr;var flag 1; // 标识是否进行交换for(var i0; i < arr.length; i){if(i !0 && flag) break;for(var j0; j <…

524. 通过删除字母匹配到字典里最长单词

524. 通过删除字母匹配到字典里最长单词 给你一个字符串 s 和一个字符串数组 dictionary 作为字典&#xff0c;找出并返回字典中最长的字符串&#xff0c;该字符串可以通过删除 s 中的某些字符得到。 如果答案不止一个&#xff0c;返回长度最长且字典序最小的字符串。如果答案…

django开发商城(提供初始数据,商城首页及购物车)

1.爬取数据 2.json数据转化为sql语句 3.新建轮播图模型(模型名与sql语句对应表名相同) class Wheel(models.Model):imgmodels.CharField(max_length150)namemodels.CharField(max_length20)trackidmodels.CharField(max_length20) 4.终端打开mysql,执行插入语句 5.在首页进行展…

多语言版希尔排序

2019独角兽企业重金招聘Python工程师标准>>> 简介 希尔排序(Shells Sort)是插入排序的一种又称“缩小增量排序”&#xff08;Diminishing Increment Sort&#xff09;&#xff0c;是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。该方法因D.L…

UML 中extend和include的区别

在UML用例图中有两种关系——包含和扩展&#xff0c;容易混淆&#xff0c;下面通过一张表来区别一下这两种关系。 转载于:https://www.cnblogs.com/yonyong/p/8555547.html

hdu 6301 Distinct Values(贪心)题解

题意&#xff1a;长为n的串&#xff0c;给你m个区间&#xff0c;这些区间内元素不重复&#xff0c;问这样的串字典序最小为&#xff1f; 思路&#xff1a;用set保存当前能插入的元素&#xff0c;这样就能直接插入最小元素了。对操作按l排序&#xff0c;因为排过的不用排&#x…

浏览器兼容CSS渐进增强 VS 优雅降级如何选择

由于低级浏览器不支持 CSS3&#xff0c;但是 CSS3 特效太优秀不忍放弃&#xff0c;所以在高级浏览器中使用CSS3&#xff0c;而在低级浏览器只保证最基本的功能。二者的目的都是关注不同浏览器下的不同体验&#xff0c;但是它们侧重点不同&#xff0c;所以导致了工作流程上的不同…

细数sass安装中遇到的坑

前言&#xff1a; 前两天打算清理电脑的时候&#xff0c;遇到了一点特殊的问题&#xff0c;打算重装一些东西&#xff0c;其中就有我一直用的顺手的SASS预编译工具。 但是在重装的时候&#xff0c;我发现我居然不会用了&#xff1f;&#xff1f;&#xff1f; 靠&#xff0c;要不…

442. 数组中重复的数据

442. 数组中重复的数据 给定一个整数数组 a&#xff0c;其中1 ≤ a[i] ≤ n &#xff08;n为数组长度&#xff09;, 其中有些元素出现两次而其他元素出现一次。 找到所有出现两次的元素。 你可以不用到任何额外空间并在O(n)时间复杂度内解决这个问题吗&#xff1f; 示例&am…

[bzoj 2726] 任务安排 (斜率优化 线性dp)

3月14日第三题&#xff01;&#xff01;&#xff01;&#xff08;虽然是15号发的qwq&#xff09; Description 机器上有N个需要处理的任务&#xff0c;它们构成了一个序列。这些任务被标号为1到N&#xff0c;因此序列的排列为1,2,3…N。这N个任务被分成若干批&#xff0c;每批…

2018年,牛客网小白月赛5

第一次啊&#xff0c;补题&#xff0c;希望大佬批评。 题目按我补题顺序来的。 https://www.nowcoder.com/acm/contest/135#question H 题 最大公倍数 题意:给出两个数&#xff0c;求最大公倍数 欧几里德算法算出最大公约数k; 然后算出。最大公倍数即可 代码如下&#xff1a; …