跳转至

LC763 - 划分字母区间

PartitionLabels.go
package Greedy

func partitionLabels(s string) []int {
    hashTable := make(map[byte]int)
    // hashTable记录字符串中每个字母最后一次出现的位置
    for i := 0; i < len(s); i++ {
        hashTable[s[i]] = i
    }
    result := make([]int, 0)
    for cur := 0; cur < len(s); {
        tmp := cur
        for limit := cur; cur <= limit; cur++ {
            limit = max(limit, hashTable[s[cur]])
        }
        result = append(result, cur-tmp)
    }
    return result
}