不超时已经满足。。11.48%
class Solution(object):
def partitionLabels(self, S):
"""
:type S: str
:rtype: List[int]
"""
s_list = list(S)
lenth = len(s_list)
result = []
def split_list(lists):
l_len = len(lists)
cnt = 0
for index,char in enumerate(lists):
index2 = l_len-1-lists[::-1].index(char)
if index2==index:
result.append(1)
cnt += 1
else:
break
return [cnt,index2]
start = 0
while(True):
[cnt,index1] = split_list(s_list)
if index1==(lenth-1):
if index1+1-cnt > 0:
result.append(index1+1-cnt)
return result
index2 = 0
a = cnt
b = index1
choose = 1
save_index2 = 0
while(True):
for i in s_list[a:b]:
index = lenth-1-(s_list[::-1].index(i))
index2 = index if index>index2 else index2
if choose==1 or index2>save_index2:
a = b
b = index2
choose = 0
else:
break
save_index2 = index2
result.append(index2+1-cnt)
if index2==(lenth-1):
break
elif index2==(lenth-2):
result.append(1)
break
start = index2+1
s_list = s_list[start:]
lenth = len(s_list)
return result
---------------------------
89.22% 多积累把 尤其是dict去重好好利用 greedy
class Solution(object):
def partitionLabels(self, S):
"""
:type S: str
:rtype: List[int]
"""
result = []
anchor = 0
j = 0
last = {char:i for i,char in enumerate(S)}
for i,char in enumerate(S):
j = max(j,last[char])
if i==j:
result.append(j-anchor+1)
anchor = i+1
return result
-----------------------------------------
print set([1,4,3,2,3,3]) #set([1,2,3,4])
print set([1,4,3,2,3,3]) & set([3,4,5,6,7]) #set([3,4])
5.74%
class Solution(object):
def partitionLabels(self, S):
"""
:type S: str
:rtype: List[int]
"""
result = []
while S:
i = 1
while(set(S[:i])&set(S[i:])):
i += 1
result.append(i)
S = S[i:]
return result