给你一个字符串 s 。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。
注意,划分结果需要满足:将所有划分结果按顺序连接,得到的字符串仍然是 s 。
返回一个表示每个字符串片段的长度的列表。
func partitionLabels(s string) []int {
index := []int{}
last := make(map[rune]int, 26)
for i, v := range s {
last[v] = i
}
for start := 0; start < len(s); {
end := last[rune(s[start])]
for i := 0; i < end; i++ {
if last[rune(s[i])] > end {
end = last[rune(s[i])]
}
}
index = append(index, end-start+1)
start = end + 1
}
return index
}