leetcode 316. Remove Duplicate Letters
来源:互联网 发布:三国演义的漏洞 知乎 编辑:程序博客网 时间:2024/06/08 13:22
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:
Given "bcabc"
Return "abc"
Given "cbacdcbc"
Return "acdb"
这个题很有意思。
1、首先chars[]保存每个字符最后出现的位置。
2、找chars[]里的最小值,获得这个位置pos。
3、从[start, pos]中搜索最小的字符,加入ret。start = 这个字符位置+1。
4、chars[这个字符] = -1;因为一个字符只要一次。
5、重复2-4
class Solution {public: string removeDuplicateLetters(string s) { string ret = ""; vector<int> chars(26, -1); for (int i = 0; i < s.size(); i++) chars[s[i] - 'a'] = i; start = 0; while (1) { int pos = findminpos(chars); if (pos == -1) break; char c = findminchar(pos, s, chars); ret = ret + c; chars[c - 'a'] = -1; } return ret; }private: int start; int findminpos(vector<int>& chars) { int ret = INT_MAX; for (auto it : chars) { if (it != -1) ret = min(ret, it); } return (ret == INT_MAX) ? -1 : ret; } char findminchar(int pos, string& s, vector<int>& chars) { char ret = 'z'; for (int i = start; i <= pos; i++) { if (chars[s[i] - 'a'] != -1 && s[i] < ret) { ret = s[i]; start = i + 1; } } return ret; }};
阅读全文
0 0
- Leetcode 316. Remove Duplicate Letters
- Leetcode 316. Remove Duplicate Letters
- leetcode 316. Remove Duplicate Letters
- 316. Remove Duplicate Letters LeetCode
- LeetCode 316. Remove Duplicate Letters
- leetcode.316. Remove Duplicate Letters
- LeetCode 316. Remove Duplicate Letters
- [leetcode]316. Remove Duplicate Letters
- leetcode 316. Remove Duplicate Letters
- leetcode 316. Remove Duplicate Letters
- leetcode 316. Remove Duplicate Letters
- leetcode Remove Duplicate Letters
- leetcode: Remove Duplicate Letters
- LeetCode Remove Duplicate Letters
- 《leetCode》:Remove Duplicate Letters
- Leetcode: Remove Duplicate Letters
- leetcode--Remove Duplicate Letters
- [Leetcode]Remove Duplicate Letters
- 热更新学习笔记(一)
- 下载谷歌浏览器离线安装包
- java web应用分布式改造方案
- 汇编语言学习笔记一:CS和IP寄存器
- 在登录界面中:Form表单中action和onsubmit事件的执行顺序!
- leetcode 316. Remove Duplicate Letters
- Studio简易操作
- MySQL索引浅谈
- 大学极为关键的这一年,考研or工作?
- 破解华为三层交换机Console密码
- laravel ping+微信扫码
- vue绑定图片路径数据问题
- LNMP环境搭建
- weblog集群部署项目