lc-go/solutions/4/q443/solution.go
2026-01-25 11:56:12 +09:00

39 lines
495 B
Go

package q443
func compress(chars []byte) int {
seqLen := 0
char := chars[0]
p := 1
writeNumber := func(num int) {
i := 1
for ; i*10 <= num; i *= 10 {
}
for ; i > 0; i /= 10 {
chars[p] = byte(num/i) + '0'
p++
num %= i
}
}
for _, c := range chars {
if c == char {
seqLen++
} else {
char = c
if seqLen > 1 {
writeNumber(seqLen)
}
seqLen = 1
chars[p] = char
p++
}
}
if seqLen > 1 {
writeNumber(seqLen)
}
return p
}
var _ = compress