首页 > 试题广场 >

字符串压缩

[编程题]字符串压缩
  • 热度指数:8732 时间限制:C/C++ 5秒,其他语言10秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
对字符串进行 RLE 压缩,将相邻的相同字符,用计数值和字符值来代替。例如:aaabccccccddeee,则可用 3a1b6c2d3e 来代替

数据范围:字符串长度满足

输入描述:
输入为a-z,A-Z的字符串,且字符串不为空,如aaabccccccddeee


输出描述:
压缩后的字符串,如3a1b6c2d3e
示例1

输入

aaabccccccdd

输出

3a1b6c2d
package main

import (
    "fmt"
    "strconv"
    "os"
    "bufio"
)

var in=bufio.NewReader(os.Stdin)

func main() {
    var s string
    fmt.Fscan(in,&s)
    ans:=""
    var pre byte
    cnt:=0
    for i,ch:=range []byte(s){
        if i==0{
            pre=ch
            cnt=1
        }else{
            if ch==pre{
                cnt++
            }else{
                ans+=strconv.Itoa(cnt)+string(pre)
                pre=ch
                cnt=1
            }
        }
    }
    ans+=strconv.Itoa(cnt)+string(pre)
    fmt.Print(ans)
}

发表于 2023-03-18 01:48:40 回复(0)