1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| package main
func partitionLabels(s string) []int { lastPos := [26]int{} for i, c := range s { lastPos[c-'a'] = i }
start, end := 0, 0 result := make([]int, 0)
for i, c := range s { if lastPos[c-'a'] > end { end = lastPos[c-'a'] }
if i == end { result = append(result, end-start+1) start = end + 1 } }
return result }
|