LeetCode C++ 1081. Smallest Subsequence of Distinct Characters【Greedy/Stack/String】中等
发布日期:2021-07-01 02:58:32
浏览次数:2
分类:技术文章
本文共 1127 字,大约阅读时间需要 3 分钟。
Return the lexicographically smallest subsequence of s
that contains all the distinct characters of s
exactly once.
Example 1:
Input: s = "bcabc"Output: "abc"
Example 2:
Input: s = "cbacdcbc"Output: "acdb"
Constraints:
1 <= s.length <= 1000
s
consists of lowercase English letters.
题意:返回 s
字典序最小的子序列,该子序列包含 s
的所有不同字符,且只包含一次。
解法 贪心+栈
class Solution { public: string smallestSubsequence(string s) { if (s.size() <= 1) return s; vectorst; int n = s.size(); bool vis[26] = { false}; for (int i = 0; i < n; ++i) { char c = s[i]; if (vis[c - 'a']) continue; //栈中已有这一字符,不必再添加 //栈非空且栈顶字符>新字符且新字符之后有同样的栈顶字符,就弹出栈顶字符 while (!st.empty() && c < st.back() && s.find(st.back(), i) != string::npos) { vis[st.back() - 'a'] = false; st.pop_back(); } vis[c - 'a'] = true; st.push_back(c); } string ans; for (const char &c : st) ans += c; return ans; }};
提交后的运行效率如下:
执行用时:0 ms, 在所有 C++ 提交中击败了100.00% 的用户内存消耗:6.5 MB, 在所有 C++ 提交中击败了63.23% 的用户
转载地址:https://memcpy0.blog.csdn.net/article/details/111658085 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
不错!
[***.144.177.141]2024年04月12日 16时27分42秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
李洪强经典面试题30-iOS应用性能调优的25个建议和技巧
2019-05-03
java数组实现红包的方法
2019-05-04
java数组实现买彩票(重复则重新遍历查询思想)
2019-05-04
java数组实现买彩票(二个一维数组的比较思想)
2019-05-04
static属性
2019-05-04
static方法
2019-05-04
final
2019-05-04
面向对象概述(课堂笔记)
2019-05-04
按位(位、与、或、抑或)
2019-05-04
java中实参与形参的概念
2019-05-04
List与类之间的运用,即与javabean的应用
2019-05-04
break跳出嵌套循环体
2019-05-04
类之间的关系——宅客
2019-05-04
对象数组
2019-05-04
值传递和引用传递
2019-05-04
重载(构造方法、成员方法)
2019-05-04
this关键字的构造方法的使用
2019-05-04
java中什么包不需要导入
2019-05-04
二分查找
2019-05-04
二分查找2
2019-05-04