当先锋百科网

首页 1 2 3 4 5 6 7

text中按字典序排列最小的子序列?

class Solution(object):

def smallestSubsequence(self, text):

"""

:type text: str

:rtype: str

"""

stack = []

last_o = {}

considered = {}

for i in range(len(text)-1,-1,-1):

if text[i] not in last_o:

last_o[text[i]] = i

considered[text[i]] = False

print(last_o)

i = 0

while i < len(text):

print(stack,i,text[i])

if len(stack) == 0:

stack.append(text[i])

considered[text[i]] = True

i+=1

elif stack[-1]>text[i] and considered[text[i]] == False:

if last_o[stack[-1]]>i:

considered[stack[-1]]=False

stack.pop()

else:

considered[text[i]] = True

stack.append(text[i])

i+=1

elif stack[-1]<text[i] and considered[text[i]] == False:

stack.append(text[i])

considered[text[i]] = True

i+=1

else:

i+=1

return "".join(i for i in stack)