This commit is contained in:
2026-07-23 16:56:50 +08:00
parent 124ad9afdf
commit 92784ffb0f
36 changed files with 2015 additions and 608 deletions
+49
View File
@@ -0,0 +1,49 @@
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)
}
})
}
}