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

漳州 网站设计wordpress 技术交流群

漳州 网站设计,wordpress 技术交流群,淮安做网站的公司,餐饮营销手段13种手段引言 今天开始,打算做一个新的系列:leetcode每日一题的题解。预期每天用90分钟的时间,去写一篇当天的每日一题的题解,这个目标跟早起结合在一起,才有足够的时间完成。其实早在前几年,就开始断断续续做leetc…

引言

        今天开始,打算做一个新的系列:leetcode每日一题的题解。预期每天用90分钟的时间,去写一篇当天的每日一题的题解,这个目标跟早起结合在一起,才有足够的时间完成。其实早在前几年,就开始断断续续做leetcode的每日一题,但每次连续坚持的时间都不长,可能坚持一个多月,就因为各种原因间断了。一鼓作气,再而衰,三而竭。这种需要长期坚持的事情,一旦间断,就很难再继续坚持了。今天选择再出发,先给自己定个小目标:至少坚持100天。

题目

1963. 使字符串平衡的最小交换次数

给你一个字符串 s下标从 0 开始 ,且长度为偶数 n 。字符串 恰好n / 2 个开括号 '['n / 2 个闭括号 ']' 组成。

只有能满足下述所有条件的字符串才能称为 平衡字符串

  • 字符串是一个空字符串,或者

  • 字符串可以记作 AB ,其中 AB 都是 平衡字符串 ,或者

  • 字符串可以写成 [C] ,其中 C 是一个 平衡字符串

你可以交换 任意 两个下标所对应的括号 任意 次数。

返回使 s 变成 平衡字符串 所需要的 最小 交换次数。

示例 1:

输入:s = "][]["
输出:1
解释:交换下标 0 和下标 3 对应的括号,可以使字符串变成平衡字符串。
最终字符串变成 "[[]]" 。

示例 2:

输入:s = "]]][[["
输出:2
解释:执行下述操作可以使字符串变成平衡字符串:
- 交换下标 0 和下标 4 对应的括号,s = "[]][][" 。
- 交换下标 1 和下标 5 对应的括号,s = "[[][]]" 。
最终字符串变成 "[[][]]" 。

示例 3:

输入:s = "[]"
输出:0
解释:这个字符串已经是平衡字符串。

提示:

  • n == s.length

  • 2 <= n <= 106

  • n 为偶数

  • s[i]'['']'

  • 开括号 '[' 的数目为 n / 2 ,闭括号 ']' 的数目也是 n / 2

思路

        题目中描述的“平衡字符串”,其实可以用一句话来概括:合法的括号。即对于每个右括号而言,都可以在它的左侧找到唯一的一个只匹配给它的左括号。

        提到合法的括号,很多同学第一反应就是栈。我们在判断一个字符串是否是合法的括号,就是栈的做法:

  • 遇到左括号,压栈

  • 遇到右括号,出栈,如果栈为空,那么此时肯定不是合法的括号

        不过本题有一些差异,并不是要判断这个字符串是不是合法的括号,而是要求出,最小交换几对,使得这个字符串变成合法的括号。所以,我们这里处理上,也有一些小差异:可以把压栈和出栈的操作看到最合法括号的对消,类似消消乐,那么当我们遇到当前是右括号且空栈的情况下,没有左侧括号可以匹配,可以把这个单独的右括号记录下来。由于整体来看,左右括号的数量必然是相等的,所以我们把合法的括号都消除后,留下来的必然是这样的形式:“]]]...[[[”,k个']'开头,后面跟着k个‘[’。不难想到,我们拿最前面的(k+1)/2个右括号‘]’去跟最后面的(k+1)/2个左括号‘[’交换后,整个字符串就是合法的括号了。

图解

代码

public int minSwaps0(String s) {int right = 0;Stack<Character> stack = new Stack<>();for (char c : s.toCharArray()) {if (c == '[') {stack.push(c);} else if (c == ']') {if (!stack.isEmpty()) {stack.pop();} else {right++;}}}return (right + 1) >> 1;
}

注意:这里最后使用了xxx >> 1这样的位移操作来代替除以2的操作,是对于整数 乘以2 或者 除以2 运算的常见优化,提高执行效率。

耗时

优化

进一步想,我们这里其实并不需要真正操作压栈和出栈,直接用一个整形变量cnt代替,压栈操作转换为+1,出栈操作转换为-1,判断栈是否为空可以转换为cnt == 0

代码

public int minSwaps(String s) {int right = 0;int cnt = 0;for (char c : s.toCharArray()) {if (c == '[') {cnt++;} else if (c == ']') {if (cnt != 0) {cnt--;} else {right++;}}}return (right + 1) >> 1;
}
耗时


文章转载自:

http://wI9MXYny.brxzt.cn
http://mAVFExJZ.brxzt.cn
http://xqlD7aLc.brxzt.cn
http://111KrWR8.brxzt.cn
http://qAJKWu2M.brxzt.cn
http://M0AgnDEb.brxzt.cn
http://CWh7Mc9H.brxzt.cn
http://JKUVu4Em.brxzt.cn
http://nmhWYcnu.brxzt.cn
http://XANPT4GH.brxzt.cn
http://3JLQI3pr.brxzt.cn
http://KDWqRg1s.brxzt.cn
http://dCEiDRjd.brxzt.cn
http://ATTn3tMX.brxzt.cn
http://h3XWCVn2.brxzt.cn
http://q2cIzZrt.brxzt.cn
http://QVMf3XJp.brxzt.cn
http://JfC7sGiI.brxzt.cn
http://PLeb6xVS.brxzt.cn
http://FHbBxqaK.brxzt.cn
http://FevN5JNV.brxzt.cn
http://THQ6lU0i.brxzt.cn
http://LzTv6Gc5.brxzt.cn
http://Lz6thoBu.brxzt.cn
http://RTty0GhM.brxzt.cn
http://zAqpJtYh.brxzt.cn
http://NxxHvqwE.brxzt.cn
http://EOwfoM4i.brxzt.cn
http://4eSp89cI.brxzt.cn
http://ROpXF33B.brxzt.cn
http://www.dtcms.com/wzjs/634690.html

相关文章:

  • 网站策划书模板wordpress 首行缩进 插件
  • 网站取消301后net快速建站
  • 杭州做网站怎么收费多少wordpress的nginx伪静态规则
  • 杭州网站建设公司有哪几家网站自适应开发
  • 用php做网站的新闻关键词的选取原则有
  • app需要建网站吗泗洪网页设计
  • 网站外包注意事项html5自建网站
  • 齐齐哈尔建设局网站首页海外网红营销平台
  • 永久网站建设wordpress下载视频播放器
  • 建设与管理局网站服装服饰东莞网站建设
  • 奢侈品+网站建设方案wordpress使用缩略
  • 深圳做高端企业网站建设公司免费搭建微信网站设计
  • 深圳的深圳的网站建设公司做网站买岩棉
  • 个人网站怎么进后台wordpress简约官网
  • 邢台做企业网站怎么在百度上免费做广告
  • 有没有专门做京东天猫的人才网站吸引客流的25个技巧
  • 网站域名注册规则土巴兔装修公司电话
  • 海洋网络专业网站建设郑州排名前十的科技公司
  • 湘潭网站建设 就找磐石网络wordpress 如何修改导航链接
  • 三合一网站建设方案站点
  • 东莞企业网站模板建站wordpress百宝箱软件
  • h5手机端网站开发深圳网站建设联系方式
  • 实用网站的设计与实现网站设计工程师
  • 个人网站的作用佛山网站建设推广服务
  • 杭州高端企业网站建设公司的英文
  • 做外贸维护网站需要注意什么wordpress重复链接
  • 可以玩小游戏的网站湖北北京网站建设
  • 企业网站建设费未付款怎样挂账公司网站备案需要什么资料
  • 北京网站开发人员做网站的找哪个
  • 深圳网站开发是什么oa系统网站建设方案