给你一个字符串 s ,请你去除字符串中重复的字母,使得每个字母只出现一次。需保证 返回结果的字典序最小(要求不能打乱其他字符的相对位置)。

注意:该题与 1081 https://leetcode-cn.com/problems/smallest-subsequence-of-distinct-characters 相同

示例 1:

输入:s = "bcabc"
输出"abc"

示例 2:

输入:s = "cbacdcbc"
输出:"acdb"

提示:

  • 1 <= s.length <= 104
  • s 由小写英文字母组成

哈哈哈,我还以为一行能解决:

class Solution:def removeDuplicateLetters(self, s: str) -> str:return "".join(sorted(list(set(list(s)))))

结果忘了人家还得保持原来的顺序,丢人了,不过这样居然还能通过一半的样例:

  1. 如果字符只出现一次,放入栈中之后顺序不会再变;
  2. 如果当前字符比栈顶字符小,并且后面还会出现这个字符,则把它pop之后等后面再append。

Python3

class Solution:def removeDuplicateLetters(self, s: str) -> str:stack = []for i, ch in enumerate(s):if ch not in stack:while stack and ch < stack[-1] and stack[-1] in s[i:]:stack.pop()stack.append(ch)return "".join(stack)

316. Remove Duplicate Letters 去除重复字母相关推荐

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

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

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

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

  3. LeetCode 316. Remove Duplicate Letters

    (自己开发的博客,欢迎访问)https://www.weiboke.online 316. Remove Duplicate Letters Given a string which contains ...

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

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

  5. 316. 去除重复字母

    链接:316. 去除重复字母 题解:https://leetcode-cn.com/problems/remove-duplicate-letters/solution/qu-chu-zhong-fu ...

  6. LeetCode 练习——316. 去除重复字母

    文章目录 1.题目描述 2.思路 2.1 代码 2.2 测试结果 3.总结 1.题目描述 去除重复字母 给你一个字符串 s ,请你去除字符串中重复的字母,使得每个字母只出现一次.需保证 返回结果的字典 ...

  7. [leetcode] remove duplicate letters

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

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

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

  9. 力扣- -去除重复字母

    力扣- -去除重复字母 文章目录 力扣- -去除重复字母 一.题目描述 二.分析 三.代码 四.问题描述 五.代码 一.题目描述 二.分析 题目的要求总结出来有三点: 要求一.要去重. 要求二.去重字 ...

最新文章

  1. 我成功攻击了Tomcat服务器,大佬们的反应亮了
  2. 一张自拍变6种风格漫画,视频也支持,全程稳定不“掉线”,这个AI不到一天狂揽1800赞...
  3. 以太坊智能合约简介(Solidity)
  4. springboot 接收小程序图片以及参数_常见的SpringBoot面试题一
  5. javascript与C#的编码解码问题
  6. uilabel 自行撑开高度_UILabel文本高度计算的那些事儿
  7. selenide_使用Selenide进行有效的UI测试
  8. Mybatis一对一结果映射
  9. c++中友元函数详解
  10. 亚马逊产品描述计算机语言编辑,亚马逊Listing产品描述编辑讲解
  11. PHP中 htmlspecialchars,htmlentities, nl2br函数
  12. HTMO DOM部分---小练习;列表之间移动、日期选择、好友选中、滑动效果、滚动条效果、飞入飞出效果。...
  13. 如果有一个想法,你如何表述?
  14. 【实习周记】ArrayMap源码分析
  15. Hadoop大数据技术课程总结2021-2022学年第1学期
  16. 【Unity3D开发小游戏】《太空射击游戏》Unity开发教程
  17. 2020-11-04 [蓝桥杯2018决赛]阅兵方阵
  18. 【这很AI】斯坦福新人工智能系统曝光:用算法优化难民工作分配
  19. 省-市-区三级联动选择地址 + 地图定位(高德api定位获取位置信息),互相联动显示
  20. 现在开一间网吧还能挣钱么?

热门文章

  1. Unity User Group深圳站——Timeline Cinemachine分享
  2. CodeForces798cMike and gcd problem
  3. Wix学习整理(2)——HelloWorld安装添加UI
  4. OGRE 学习小记 开发环境的配置
  5. .NET异步方法调用的例子
  6. java io null异常_大量java.lang.InterruptedException: null异常,数据没有同步
  7. C语言函数题-两对儿参数的交换
  8. scrapy 解析css,Scrapy基础(六)————Scrapy爬取伯乐在线一通过css和xpath解析文章字段...
  9. 玛纽尔扫地机器人怎样_扫地机器人怎样选?科沃斯超能王VS云鲸对比测试,看完你就懂了...
  10. php统计变量的位数,php实现统计二进制中1的个数算法示例