压缩字符

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 协议》,转载必须注明作者和本文链接
刻意学习
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
未填写
文章
118
粉丝
89
喜欢
173
收藏
246
排名:365
访问:2.6 万
私信
所有博文
社区赞助商