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

该博客讨论了LeetCode上的问题316——如何从给定的字符串中移除重复字母,使每个字母仅出现一次,并确保结果在字典序上是最小的。博主分享了他们的错误Python解法,并提到了这个问题与贪心算法和栈有关。

题目地址:Number of Longest Increasing Subsequence - LeetCode
做这道题目前建议先做:Longest Increasing Subsequence - LeetCode
文章地址:LeetCode 300. Longest Increasing Subsequence–O(n log n)–Java,C++,Python解法


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"

这道题目的相关标签有贪心和栈。
乍看这道题感觉很简单,贪心直接做。
我的错误的Python解法如下:

class Solution:
    def removeDuplicateLetters(self, s: str) -> str:
        result=""
        for i in s:
            index=result.find(i)
            if index==-1:
                result+=i
            else:
                length=len(result)
                if index==length:
                    continue
                elif result[index+1]<i:
                    result=result[:index]+result[index+1:]+i
        return result
                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值