lc-go/solutions/4/q443/solution.go

40 lines
587 B
Go

// Package q443 implements a solution for https://leetcode.com/problems/string-compression/
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