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

LeetCode 316. Remove Duplicate Letters


LeetCode题解专栏:LeetCode题解
LeetCode 所有题目总结:LeetCode 所有题目总结
大部分题目C++,Python,Java的解法都有。


题目地址: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
                

你可能感兴趣的:(LeetCode,python-做题,java-做题)