def partition_string(string: str) -> List[int]:
last_pos = defaultdict(int)
for i, char in enumerate(string):
last_pos[char] = i
left = 0
right = 0
lengths = []
for i, char in enumerate(string):
right = max(right, last_pos[char])
if right == i:
lengths.append(right - left + 1)
left = i + 1
return lengths