[leetcode] remove duplicate letters
用时4ms,内存1M (好高啊魂淡
思路:
先找出在“仍保留原字符串中所有字母种类,开头字母最小”的后缀子字符串。i.e.如果前面遍历到的字母在后面仍有出现则忽略掉,继续找最小首字母。
实现为:
//counts数组存储各类字母的数量 ,当某个字母减为0时说明后面不会再出现,应就此停止 for (int i=0;i<length;i++) {if (s[i]<smallest_ch) {smallest_ch_index=i;smallest_ch=s[i];}if(--counts[s[i]-'a']==0)break; }
然后切掉可以省略的前半截字符串,答案应为“当前找到的最小首字母”+“首字母后的子串去掉所有该字母,再对该子串进行remove duplicate letters操作”。
完整实现:
class Solution { public:string removeDuplicateLetters(string s) {auto length=s.size();if (length<=1)return s;int counts[26]={0};for (int i=0;i<length;i++)++counts[s[i]-'a'];int smallest_ch_index=0;char smallest_ch=s[0];for (int i=0;i<length;i++) {if (s[i]<smallest_ch) {smallest_ch_index=i;smallest_ch=s[i];}if(--counts[s[i]-'a']==0)break;}string remained=s.substr(smallest_ch_index+1);while (remained.find(smallest_ch)!=string::npos)remained=remained.erase(remained.find(smallest_ch),1);return smallest_ch+removeDuplicateLetters(remained);} };
转载于:https://www.cnblogs.com/RDaneelOlivaw/p/10352326.html
[leetcode] remove duplicate letters相关推荐
- LeetCode 316. Remove Duplicate Letters
(自己开发的博客,欢迎访问)https://www.weiboke.online 316. Remove Duplicate Letters Given a string which contains ...
- LeetCode 316 Remove Duplicate Letters(删除重复字符)
问题:给出一个字符串,要求删除重复字符,字典序是最小并且保持字符的相对位置. 思路: 方法一,使用递归算法,在出现只出现一次的前缀字符串中确定最小字符,然后在剩下的子串中递归. 方法二,使用栈做,先记 ...
- leetcode 316. Remove Duplicate Letters | 316. 去除重复字母(单调栈解法)
题目 https://leetcode.com/problems/remove-duplicate-letters 题解 关于什么是"字典序" 字典序,换成数字更好理解一点 a:1 ...
- 316 Remove Duplicate Letters 去除重复字母
给定一个仅包含小写字母的字符串,去除重复的字母使得所有字母出现且仅出现一次.你必须保证返回结果是所有可能结果中的以字典排序的最短结果. 例如: 给定 "bcabc" 返回 &quo ...
- 316. Remove Duplicate Letters 去除重复字母
给你一个字符串 s ,请你去除字符串中重复的字母,使得每个字母只出现一次.需保证 返回结果的字典序最小(要求不能打乱其他字符的相对位置). 注意:该题与 1081 https://leetcode-c ...
- LeetCode 316. Remove Duplicate Letters--贪心--Java,C++,Python解法
题目地址:Number of Longest Increasing Subsequence - LeetCode 做这道题目前建议先做:Longest Increasing Subsequence - ...
- LeetCode:Remove Duplicates from Sorted List I II
LeetCode:Remove Duplicates from Sorted List Given a sorted linked list, delete all duplicates such t ...
- Remove Duplicate
题目描述: Petya has an array a consisting of n integers. He wants to remove duplicate (equal) elements. ...
- [LeetCode] Remove Element 分析
Remove Element算是LeetCode的一道水题,不过这题也有多种做法,现就我所知的几种做一点讨论. 题目链接:https://leetcode.com/problems/remove-el ...
最新文章
- PNAS-2018-根系分泌物香豆素调控微生物群落结构并促进植物健康
- C++实现RTMP协议发送H.264编码及AAC编码的音视频
- 【Python之路Day17】Python Web框架之 Django
- Oracle中NVARCHAR2字符集不匹配问题
- gtest 测试部分_全部关于测试–第1部分
- 十二个生活习惯,增加你的心灵压力
- l380废墨收集垫已到使用寿命_湖北雨水收集系统定制
- 怎么复活不了睡袋_测评 | 萌新的北京冬季户外睡袋初体验
- 百度文库崩溃半小时:赶论文的网友也集体崩了
- oracle 参数脚本,oracle 查看隐含参数脚本
- HDU3788 ZOJ问题【文本处理】
- Android TTS(TextToSpeech)实践
- 运放输入偏置电流方向_运放中输入偏置电流和输入失调电流的区别??
- warning: backslash and newline separated by space
- Android图片拼接
- babylonjs 分部加载模型_基于Babylonjs自制WebGL3D模型编辑器
- git修改已提交commit的Author信息
- 微信小程序中实现获奖名单滚动播放
- 保持健康和活力 - 腰间盘突出康复指南
- java基于微信小程序的个人管理软件 uniapp 小程序
热门文章
- hdu-2204(容斥原理)
- 用CRF做命名实体识别——NER系列(三)
- 【译】On Path Independence
- android 动态移动xy,android – 如何使用AChartEngine动态线图和X轴自动平移(滚动)?...
- Qt 数据库操作(二)
- shell读取excel_[PHP 开源类库]simple-Excel — 兼具优雅与性能的Excel和CSV文件读写工具...
- 修改oracle数据连接数据库,修改Oracle数据库的连接数
- 使用animate实现页面过度_很多人都在使用的开源CSS动画效果库——animate.css
- Transformer、BERT学习笔记
- 2017年09月23日普级组 树塔狂想曲