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

建设网站租用空间甘肃省崇信县门户网

建设网站租用空间,甘肃省崇信县门户网,中国货源网一件代发,个体户备案网站可以做企业站吗题目:去除重复字母 给你一个字符串 s ,请你去除字符串中重复的字母,使得每个字母只出现一次。需保证 返回结果的字典序最小(要求不能打乱其他字符的相对位置)。 示例 1: 输入:s “bcabc” 输…

题目:去除重复字母

给你一个字符串 s ,请你去除字符串中重复的字母,使得每个字母只出现一次。需保证 返回结果的字典序最小(要求不能打乱其他字符的相对位置)。

示例 1:

输入:s = “bcabc”
输出:“abc”
示例 2:

输入:s = “cbacdcbc”
输出:“acdb”

其实这道题我觉得和 402. 移掉 K 位数字很像的,这道题的题解可以看一下单调栈的总结与案例复盘。

思路:

402 是构造单调递增栈的过程中,通过k的数量判断要不要将栈顶元素弹出。
316 是构造单调递增栈的过程中,通过 尚未遍历的元素中(restMap)是否还有和栈顶元素重复的元素,如果没有了,那么栈顶元素不可以去除,否则可以去除。
316 还需要判断一下栈内(usedMap)是否有这个元素,如果已经有了,也不可以入栈。
316 中需要用两个map来维护栈内的元素个数 和 尚未遍历的元素个数。

var removeDuplicateLetters = function(s) {let restMap = new Map();let usedMap = new Map();for(let i = 0; i < s.length; i++){if(!restMap.has(s[i])){restMap.set(s[i],0);}  restMap.set(s[i],restMap.get(s[i])+1);   usedMap.set(s[i], 0);}let stack = [];for(let i = 0; i < s.length; i++){restMap.set(s[i],restMap.get(s[i])-1);// 如果栈里已经有了就不要再入栈了,比如栈里有ab,如果当前元素是a,// 那么a就会将b弹出,不会弹出a,又因为栈里已经有a,所以当前元素也不会将元素压入栈中,// 因此无缘无故弹出一个元素,我们一定要清楚,弹出元素是为了不破坏单调性,不弹也不会破环。if(usedMap.get(s[i]) === 1){continue;}//构造单调递增while(stack.length && s[i] < stack[stack.length-1] && restMap.get(stack[stack.length-1]) > 0){let top = stack.pop();usedMap.set(top,0);} // 栈里没有才能往里面放stack.push(s[i]);usedMap.set(s[i],1);}return stack.join('');};
http://www.yayakq.cn/news/212941/

相关文章:

  • 怎么学建设网站做网站建设公司怎么选
  • 凡科建站的网址商城网站建设方案
  • 网站设计论文范文大全集棋牌软件开发一个多少钱
  • 青岛网站排名公司交友app开发多少钱
  • 网站 禁止查看源码sketch做网站线框图
  • 网站程序开发技术滦南网站建设
  • 网站 seo 设置湖南关键词排名推广
  • 技术培训机构专业的网站建设与优化
  • 网站开发 写文档工业和信息化部装备工业发展中心
  • 建什么网站做cpaapp制作外包
  • 个人网站支付解决方案seo技术大师
  • 大连网站空间遂宁移动端网站建设
  • 网站规划开发前景外贸常用网站有哪些
  • 北京 设计 网站建设工程建设业主官方网站
  • 外贸网站风格黑色企业网站
  • 网站开发学习教程centos怎么做网站
  • 同性性做视频网站如何建立网站数据库连接
  • 怎么查网站的注册信息wordpress 调用分类名称
  • 大连网站制作的公司简洁大气企业网站欣赏
  • 做网站赚钱还是做app赚钱中国网站制作公司排名
  • 学校网站建设的安全策略甘肃省通信管理局网站
  • 建设网站请示宣传微信小程序开发平台游戏
  • 聊城做网站建设物流网站怎么做推广
  • 干净的下载网站博客网站程序
  • 来个网站吧好人一生平安连锁店品牌设计公司
  • DW怎么做电商网站旅游手机网站模板
  • 广东h5网站建设广州网站建设功能
  • 卡盟网站制作漯河哪里做网站
  • 庆阳网站建设l礼品文化网站建设
  • 网站备案如何注销网站三要素关键词 描述怎么做