50 lines
1.5 KiB
Go
50 lines
1.5 KiB
Go
package top100liked
|
||
|
||
import (
|
||
"testing"
|
||
)
|
||
|
||
// https://leetcode.cn/problems/partition-labels/?envType=study-plan-v2&envId=top-100-liked
|
||
// 763. 划分字母区间
|
||
//
|
||
// 给你一个字符串 `s` 。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。例如,字符串 `"ababcc"` 能够被分为 `["abab", "cc"]`,但类似 `["aba", "bcc"]` 或 `["ab", "ab", "cc"]` 的划分是非法的。
|
||
// 注意,划分结果需要满足:将所有划分结果按顺序连接,得到的字符串仍然是 `s` 。
|
||
// 返回一个表示每个字符串片段的长度的列表。
|
||
// 示例 1:
|
||
// 输入:s = "ababcbacadefegdehijhklij"
|
||
// 输出:[9,7,8]
|
||
// 解释:
|
||
// 划分结果为 "ababcbaca"、"defegde"、"hijhklij" 。
|
||
// 每个字母最多出现在一个片段中。
|
||
// 像 "ababcbacadefegde", "hijhklij" 这样的划分是错误的,因为划分的片段数较少。
|
||
// 示例 2:
|
||
// 输入:s = "eccbbbbdec"
|
||
// 输出:[10]
|
||
//
|
||
// 提示:
|
||
// - `1 <= s.length <= 500`
|
||
// - `s` 仅由小写英文字母组成
|
||
//
|
||
func partitionLabels(s string) []int {
|
||
|
||
}
|
||
|
||
func TestPartitionLabels(t *testing.T) {
|
||
cases := []struct {
|
||
name string
|
||
s string
|
||
want []int
|
||
}{
|
||
{"example1", "ababcbacadefegdehijhklij", []int{9, 7, 8}},
|
||
{"example2", "eccbbbbdec", []int{10}},
|
||
}
|
||
for _, c := range cases {
|
||
t.Run(c.name, func(t *testing.T) {
|
||
got := partitionLabels(c.s)
|
||
if got != c.want {
|
||
t.Errorf("got %v, want %v", got, c.want)
|
||
}
|
||
})
|
||
}
|
||
}
|