(自己开发的博客,欢迎访问)https://www.weiboke.online

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.

Example 1:

Input: “bcabc”
Output: “abc”
Example 2:

Input: “cbacdcbc”
Output: “acdb”

Approach

题目大意是要去掉重复字符,保证每个字符只出现一次,并且保证最后的字符串的字典序最小。
最后看讨论区,看到一个不错的思路,用贪心的思想,每次保证在一定范围里(字符都有重复)找到最小的字符,直到某个字符次数不足一次的时候,然后递归剩余字符。

Code

class Solution {
public:string removeDuplicateLetters(string s) {vector<int> cnt(26, 0);for (auto c:s) {cnt[c - 'a']++;}int pos = 0;for (int i = 0; i < s.size(); i++) {if (s[i] < s[pos])pos = i;if (!(--cnt[s[i] - '0']))break;}if (s.empty())return "";string buffer = s.substr(pos + 1);buffer.erase(remove(buffer.begin(), buffer.end(), s[pos]), buffer.end());return s[pos] + removeDuplicateLetters(buffer);}
};

LeetCode 316. Remove Duplicate Letters相关推荐

  1. LeetCode 316 Remove Duplicate Letters(删除重复字符)

    问题:给出一个字符串,要求删除重复字符,字典序是最小并且保持字符的相对位置. 思路: 方法一,使用递归算法,在出现只出现一次的前缀字符串中确定最小字符,然后在剩下的子串中递归. 方法二,使用栈做,先记 ...

  2. leetcode 316. Remove Duplicate Letters | 316. 去除重复字母(单调栈解法)

    题目 https://leetcode.com/problems/remove-duplicate-letters 题解 关于什么是"字典序" 字典序,换成数字更好理解一点 a:1 ...

  3. LeetCode 316. Remove Duplicate Letters--贪心--Java,C++,Python解法

    题目地址:Number of Longest Increasing Subsequence - LeetCode 做这道题目前建议先做:Longest Increasing Subsequence - ...

  4. 316 Remove Duplicate Letters 去除重复字母

    给定一个仅包含小写字母的字符串,去除重复的字母使得所有字母出现且仅出现一次.你必须保证返回结果是所有可能结果中的以字典排序的最短结果. 例如: 给定 "bcabc" 返回 &quo ...

  5. 316. Remove Duplicate Letters 去除重复字母

    给你一个字符串 s ,请你去除字符串中重复的字母,使得每个字母只出现一次.需保证 返回结果的字典序最小(要求不能打乱其他字符的相对位置). 注意:该题与 1081 https://leetcode-c ...

  6. [leetcode] remove duplicate letters

    用时4ms,内存1M (好高啊魂淡 思路: 先找出在"仍保留原字符串中所有字母种类,开头字母最小"的后缀子字符串.i.e.如果前面遍历到的字母在后面仍有出现则忽略掉,继续找最小首字 ...

  7. Leetcode 316

    Leetcode 316 Remove Duplicate Letters 开始刷题,记录一下分析过程和编码中的问题 Created with Raphaël 2.1.0 开始 未到s末尾 取s中一个 ...

  8. LeetCode 26 Remove Duplicates from Sorted Array [Array/std::distance/std::unique] c++

    LeetCode 26 Remove Duplicates from Sorted Array [Array/std::distance/std::unique] <c++> 给出排序好的 ...

  9. [leetcode]83.Remove Duplicates from Sorted List

    题目 Given a sorted linked list, delete all duplicates such that each element appear only once. Exampl ...

最新文章

  1. error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MTd_StaticDebug”不匹配值“MDd_DynamicDebug...
  2. 成为Java流大师–第3部分:终端操作
  3. linux监控nginx占用,使用zabbix 2.4 监控nginx
  4. 50行代码,搞定敏感数据读写!
  5. 人生是自己的选择,双11技术大队长的育女心经
  6. 阿里达摩院提出新型优化方法,一行代码即可替换现有优化器
  7. 27muduo_net库源码分析(三)
  8. LeetCode—4.滑动窗口
  9. MinGW gcc下载链接及sjlj、dwarf、seh异同以及gcc安装
  10. 利用pytesseract进行图片文字识别
  11. 华为mate40鸿蒙系统用久了会卡吗,华为mate40用多久会卡_华为mate40能流畅使用多久...
  12. 我的计算机弹不到桌面,桌面怎么弹不出u盘
  13. 添加分隔符|的几种方法
  14. ps aux指令詳解 http://blog.csdn.net/hanner_cheung/article/details/6081440
  15. 一分钟快速把一篇论文后面的参考文献全部下载下来
  16. 微信小程序实验四 —— 扫雷游戏
  17. 2022年施工员-市政方向-通用基础(施工员)考试题模拟考试平台操作
  18. MySQL查询7天内过生日的用户 查询生日是今天的用户 解决跨年问题
  19. kubernets eviction策略
  20. 苹果icloud邮箱抓取

热门文章

  1. Linux下deb安装包的安装教程
  2. 高级计算机网络(习题二加解析)
  3. java gettext用法_Java Label.getText方法代码示例
  4. libc and libc++
  5. Python 10个优雅的写法,你会吗?
  6. Android手机信息采集
  7. 3c认证是什么,3c认证产品范围与认证材料
  8. C语言的除法运算:整除/和求余%
  9. js读取excel导出json文件
  10. Linux命令 - zip命令