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

秦皇岛建设厅网站百度网站首页

秦皇岛建设厅网站,百度网站首页,自己做投票的网站,网站运营策划ppt给你一个字符串 s ,请你去除字符串中重复的字母,使得每个字母只出现一次。需保证 返回结果的字典序最小(要求不能打乱其他字符的相对位置)。 示例 1: 输入:s “bcabc” 输出:“abc” 示例 2&am…

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

示例 1:

输入:s = “bcabc”
输出:“abc”

示例 2:

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

提示:

1 <= s.length <= 10^4
s 由小写英文字母组成

解题思路:

1、大于O(n ^ 2)时间复杂度的算法会超时

2、由于要输出字典序最小的排列,所以字典序越小的字符就我设法让其排在前面,这就是贪心思维

3、需要栈辅助,即栈顶元素比添加进来的元素大,那么设法消掉此栈顶元素

4、需要index数组保留字符最后一次出现的位置,以便删掉栈顶元素使用

5、需要boolean类型数组判断新添元素是否在栈内存在

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

代码:

class Solution {public String removeDuplicateLetters(String s) {char a[] = s.toCharArray();int len = a.length;int index[] = new int [26]; for(int i = 0; i < len; i ++) index[a[i] - 'a'] = i;//记录每个字母最后出现的位置;boolean check[] = new boolean [26];Deque<Character> stack = new ArrayDeque<>();for(int i = 0; i < len; i ++) {if(!check[a[i] - 'a']) {//如果栈内没有,就选择添加while(!stack.isEmpty() && stack.peekLast() > a[i] && index[stack.peekLast() - 'a'] > i) {//如果添加的元素比栈顶小char c = stack.removeLast();check[c - 'a'] = false;}stack.add(a[i]);check[a[i] - 'a'] = true;}}StringBuffer s1 = new StringBuffer();for(char d : stack) s1.append(d);return s1.toString();}
}

在这里插入图片描述

http://www.ds6.com.cn/news/72020.html

相关文章:

  • 做网站需要的资料软文广告案例
  • 福步外贸官网海南seo代理加盟供应商
  • 高端网站定做整站优化关键词排名
  • 新手练习做网站哪个网站比较合适网站运营维护的基本工作
  • 湘潭找工作网站个人博客模板
  • 如何显示隐藏wordpressseo引擎优化培训
  • webapp 做视频网站天津网站推广
  • 马云做黄页网站时候威海seo
  • 专门为网站建设服务的公司去哪里找需要推广的app
  • 中铁建设集团华北分公司网站域名查询注册信息查询
  • 门户网站做等保需要备案哪些百度免费广告发布平台
  • 建设彩票网站制作免费优化网站
  • wordpress和csdn的区别seo行业岗位有哪些
  • 货源网站开发今日小说百度搜索风云榜
  • 成都市自住房建设网站网站发布与推广方案
  • 天元建设集团有限公司开票信息seo网页优化公司
  • 找公司做网站注意事项百度关键词怎么做
  • 舟山网站建设企业产品seo优化
  • 毕业设计网站建设重庆网站seo技术
  • 手机网站开发解决方案全国疫情实时动态
  • 聊城网站开发培训网站发帖推广平台
  • dedecms 建两个网站的问题广告网络推广怎么做
  • 河南高端网站建设冯宗耀seo教程
  • 万达做的电商网站女教师网课入06654侵录屏
  • 北京响应式网站开发新的网络推广方式
  • 不用写代码做网站软件百度模拟点击软件判刑了
  • 网站建设需要的资质网络推广 网站制作
  • 网站做导航条网站推广多少钱
  • 注册公司名字核名查询系统seo关键词首页排名
  • 做设计挣钱的网站网络域名