题目
题解
思路:单开一个数组记录每个字母最后出现的位置,对于遍历到的字母,记录它出现的最后位置为end,每次遍历都更新end,如果已经遍历到end的位置,就说明从start到end为止的字母为一个区间,其中的字母都不可能会在后面再出现,把它加入数组;
class Solution:
def partitionLabels(self, s: str) -> List[int]:
last = [0]*26
for i,ch in enumerate(s):
last[ord(ch)-ord('a')] = i
start = end = 0
partition = list()
for i,ch in enumerate(s):
end = max(end,last[ord(ch)-ord('a')])
if i == end:
partition.append(end-start+1)
start = end+1
return partition