LeetCode 763. Partition Labels
考点 | 难度 |
---|---|
Greedy | Easy |
题目
You are given a string s. We want to partition the string into as many parts as possible so that each letter appears in at most one part.
Note that the partition is done so that after concatenating all the parts in order, the resultant string should be s.
Return a list of integers representing the size of these parts.
思路
第一次iteration先记录每个character的last seen index
第二次iteration对于每个character,找到last seen index,如果有一个character的index = last seen index,停止
答案
class Solution(object):
def partitionLabels(self, S):
result, last_seen, max_last_seen, count = [], {}, 0, 0
for i, char in enumerate(S):
last_seen[char] = i
for i, char in enumerate(S):
max_last_seen = max(max_last_seen, last_seen[char])
count += 1
if i == max_last_seen:
result.append(count)
count = 0
return result