316. Remove Duplicate Letters

Given a string which contains only lowercase letters, remove duplicate letters so that every letter appear once and only once. You must make sure your result is the smallest in lexicographical order among all possible results.

Given "bcabc"

Return "abc"

Given "cbacdcbc"

Return "acdb"

删除字符串里的重复字符,要让字母按字典顺序排序,前提是不能打乱之前的顺序。


代码:


参考代码


解题思路:定义两个hash表,一个用来存储出现字符的个数,一个用来存储字符是否出现在结果中。然后遍历字符串,将对应字符个数减一,判断该字符串是否出现在结果中,如果出现在结果中,表明该字符串已经被放到了正确的位置上,则循环继续;如果没有出现在结果中,比较当前和结果的最后一个字符串,如果当前的字符串小于result的back的话,并且结果字符串的最后一个字符在后边还会出现,那么我们就把结果的最后一个字符串踢出,到这里我们是要保证小的字符串放到前边,也要保证大的字符串在后边还会出现;如果当前的字符串大于结果的字符串,或者结果字符串尾部字符已经是最后一个,那么我们就直接把当前遍历的字符串加在结果的尾部,并且将inresult设置为true,表示这个字符串已经出现在result里。为了使第一次比较成功,我们需要把result初始化成" ",如果result时空的话就没法去出它的最后一个数值。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Given a string which contains only lowercase letters, rem...
    Jeanz阅读 2,593评论 0 0
  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 14,358评论 0 33
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,169评论 19 139
  • 似乎做朋友有点欠缺 又见面 一见如故 记忆犹存 只是冒然问一句 过得好吗? 跟我相处一见面是这样 那我们就生疏了 ...
    妙妙尼阅读 2,812评论 0 0
  • 冬天早起是很难的,赶着上班不迟到吧! 坐在车上,刷圈!看到好多家长转发《罗一笑,你给我站住!》大家都呼吁帮帮这个孩...
    小虫子看世界阅读 1,558评论 4 5

友情链接更多精彩内容