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

建设网店网站室内设计效果图及文字介绍

建设网店网站,室内设计效果图及文字介绍,家装设计网站排行榜前十名,网站建设费按几年摊销LeetCode 3170. 删除星号以后字典序最小的字符串(中等) 题目描述解题思路java代码 题目描述 题目链接:3170. 删除星号以后字典序最小的字符串 给你一个字符串 s 。它可能包含任意数量的 * 字符。你的任务是删除所有的 * 字符。 当字符串还…

LeetCode 3170. 删除星号以后字典序最小的字符串(中等)

    • 题目描述
    • 解题思路
    • java代码

题目描述

题目链接:3170. 删除星号以后字典序最小的字符串

给你一个字符串 s 。它可能包含任意数量的 '*' 字符。你的任务是删除所有的 '*' 字符。

当字符串还存在至少一个 '*' 字符时,你可以执行以下操作:

  • 删除最左边的 '*' 字符,同时删除该星号字符左边一个字典序 最小 的字符。如果有多个字典序最小的字符,你可以删除它们中的任意一个。

请你返回删除所有 '*' 字符以后,剩余字符连接而成的 字典序最小 的字符串。

示例1

输入:s = “aaba*”
输出:“aab”
解释:删除 ‘*’ 号和它左边的其中一个 ‘a’ 字符。如果我们选择删除 s[3] ,s 字典序最小。

示例 2

输入:s = “abc”
输出:“abc”
解释:字符串中没有 ‘*’ 字符。

提示

  • 1 <= s.length <= 10 5 10^{5} 105
  • s 只含有小写英文字母和 ‘*’ 字符。
  • 输入保证操作可以删除所有的 ‘*’ 字符。

解题思路

  • 题目剖析:

    • 核心描述:当字符串存在 '*' 字符时,删除最左边的 '*' 字符,同时删除该星号字符左边一个字典序 最小 的字符。如果有多个字典序最小的字符,可以删除任意一个。返回删除所有 '*' 字符以后,剩余字符连接而成的 字典序最小 的字符串
    • 题意明确:
      • ① 每次都是删除当前字符串中最左边的 * ,删除 * 号的顺序是固定的,从左到右依次删除 * 号。(如果删除顺序不固定,每次任意删除一个 * 号 ,这题就会变得十分复杂)
      • ② 删除 * 号之后,还要删除一个 * 号左边字典序最小的一个字符。存在多个字典序最小的字符时,删除任意一个
  • 分析:

    • 求 “删除所有 '*' 字符以后,剩余字符连接而成的 字典序最小 的字符串”。当 *字符 左边字典序最小的字符都只有一个时,操作后得到的字符是唯一确定的。 存在多个字典序最小的字符时,选择删除哪个就是关键。由于要删除的是字典序最小的字符,为了让最终字符串字典序最小,就要保留靠前的字符,删除最靠后的那个字符。
  • 解题思路:

    • 遍历字符串,每次遇到 '*'号 都删除前面“字典序最小且下标最大” 的那个字符。为了快速地获取当前字符串中“字典序最小且下标最大” 的字符,在遍历字符串的过程中使用优先队列(堆)来对元素进行维护(字典序小的优先级高,字典序相同时下标越大的元素优先级高),遇到 *字符 时直接删除优先级最高的元素即可。依次记录被删除字符的下标,在初始字符串中排除这些字符 和 '*' 字符即为所求。

java代码

class Solution {public String clearStars(String s) {// 优先队列定义queue:字典序小的优先级高,字典序相同时下标越大的元素优先级高PriorityQueue<CharNode> queue = new PriorityQueue<CharNode>((CharNode a, CharNode b) -> (a.ch == b.ch ? b.index - a.index : a.ch - b.ch));// removeSet:记录被删除字符的下标Set<Integer> removeSet = new HashSet<Integer>();// 遇到字符的时候,将字符和下标入队。遇到*号的时候,将队顶元素出队for (int i = 0; i < s.length(); i++) {char ch = s.charAt(i);if ('*' == ch) {CharNode removeChar = queue.poll();removeSet.add(removeChar.index);continue;}CharNode newChar = new CharNode(ch, i);queue.offer(newChar);}// 没有移除的字符元素拼接得到最终答案StringBuilder res = new StringBuilder();for (int i = 0; i < s.length(); i++) {char ch = s.charAt(i);if (ch != '*' && !removeSet.contains(i)) {res.append(ch);}}return res.toString();}
}class CharNode {// 字符char ch;// 字符在字符串中的下标int index;public CharNode(char ch, int index) {this.ch = ch;this.index = index;}
}

文章转载自:

http://EwBFyT1u.zqcsj.cn
http://Fzi0iC1P.zqcsj.cn
http://190XGqXg.zqcsj.cn
http://NxYZIxuB.zqcsj.cn
http://q7Kirc9Z.zqcsj.cn
http://SpoDsakD.zqcsj.cn
http://ZkmTg1cu.zqcsj.cn
http://vfzzV00Q.zqcsj.cn
http://AYzS5q5a.zqcsj.cn
http://pFjPbM2j.zqcsj.cn
http://TvEvq0bF.zqcsj.cn
http://OjN4Eavy.zqcsj.cn
http://JFarZGDz.zqcsj.cn
http://iDK8VzF3.zqcsj.cn
http://e8RfpGcH.zqcsj.cn
http://Q4BrV5ST.zqcsj.cn
http://KlilJd8b.zqcsj.cn
http://AKJX0msj.zqcsj.cn
http://0eYJJn5x.zqcsj.cn
http://XaJqcK5h.zqcsj.cn
http://xiHFH8HW.zqcsj.cn
http://OCw8Jjaq.zqcsj.cn
http://f0e4MoVY.zqcsj.cn
http://1j65CFHN.zqcsj.cn
http://hTvp7MIj.zqcsj.cn
http://z1UIx4Fa.zqcsj.cn
http://H5iZ2Wdo.zqcsj.cn
http://ekb0lfrn.zqcsj.cn
http://qTPMviDc.zqcsj.cn
http://M8Rin1ul.zqcsj.cn
http://www.dtcms.com/wzjs/709266.html

相关文章:

  • 淮北建设银行官方网站网站制作多久能完成
  • 网站建设与管理单招江西中恒建设集团网站
  • 如何通过c语言来做网站推进门户网站建设方案
  • 徐州网站定制公司哪家好万能浏览器手机版
  • 怎么申请网站域名赚钱天津百度seo推广
  • 颍上做网站足球比赛直播在线
  • wap网站制作网站dns刷新
  • 网站的首页设计网站建设费用都包括什么科目
  • 北京学生做兼职的网站北京手机专业网站建设公司
  • 鹤壁网站建设兼职网络维护协议范本
  • 做网站有没有效果宝塔为wordpress安装redis
  • 网站开发需求列表排名优化工具
  • 公司网站推广方案台州网站如何制作
  • asp.net网站入侵wordpress怎么安装到服务器
  • 做铝板的网站网站开发的类型
  • 建设银行网站会员有什么用上海装修做网站的倒闭了
  • 在线制作网站宣传视频中国最新的国内军事新闻
  • 网站 域名wordpress添加qq聊天
  • 厦门杏林建设企业网站wordpress全站音频
  • 行业平台网站开发自动化毕设题目网站开发
  • WordPress mk主题哈尔滨优化调整人员流动管理
  • 摄影网站cnu视觉联盟开发商延期交房怎么申请退房
  • 建设通网站免费注册东莞装饰网站建设
  • mvc中手把手做网站wordpress怎么生成网站地图
  • 中信建设内部网站长沙中企动力
  • 统一门户网站建设规范购物网站建设的选题意义
  • 做网站需要提供什么条件wordpress标题截断
  • 自己做网站卖产品怎么样腾讯微博做网站外链步骤
  • 行业网站程序江苏城市建设职业学院网站
  • 要加强网站内容的建设网站外部链接添加方式