压缩字符
leetcode-443压缩字符,堆屎山代码,哈哈哈!
func Compress(chars []byte) int {
//双指针法
if len(chars) <= 0 {
return 0
}
s := make([]byte, 0)
lows, fast := 0, 0
for fast <= len(chars) {
if fast == len(chars) {
pTotal := fast - lows
if pTotal == 1 {
s = append(s, chars[lows])
lows = fast
break
}
if pTotal >= 10 {
s = append(s, chars[lows])
s = append(s, []byte(strconv.Itoa(pTotal))...)
lows = fast
break
}
s = append(s, chars[lows])
s = append(s, []byte(strconv.Itoa(pTotal))...)
lows = fast
break
}
if chars[lows] != chars[fast] {
pTotal := fast - lows
if pTotal == 1 {
s = append(s, chars[lows])
lows = fast
continue
}
if pTotal >= 10 {
s = append(s, chars[lows])
s = append(s, []byte(strconv.Itoa(pTotal))...)
lows = fast
continue
}
s = append(s, chars[lows])
s = append(s, []byte(strconv.Itoa(pTotal))...)
lows = fast
continue
}
fast++
}
for i := 0; i < len(s); i++ {
chars[i] = s[i]
}
chars = chars[:len(s)]
return len(chars)
}
本作品采用《CC 协议》,转载必须注明作者和本文链接