首页 > 试题广场 >

压缩字符串(一)

[编程题]压缩字符串(一)
  • 热度指数:6999 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
利用字符重复出现的次数,编写一种方法,实现基本的字符串压缩功能。比如,字符串aabcccccaaa会变为a2bc5a3。
1.如果只有一个字符,1不用写
2.字符串中只包含大小写英文字母(a至z)。

数据范围:
0<=字符串长度<=50000

要求:时间复杂度O(N)
示例1

输入

"aabcccccaaa"

输出

"a2bc5a3"
示例2

输入

"shopeew"

输出

"shope2w"
package main
import _"fmt"
import "strconv"
/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param param string字符串 
 * @return string字符串
*/
func compressString( param string ) string {
    if len(param)==0{
        return ""
    }
    ans:=""
    pre:=param[0]
    cnt:=1
    for i:=1;i<len(param);i++{
        if param[i]==pre{
            cnt++
        }else{
            ans+=string(pre)
            if cnt>1{
                ans+=strconv.Itoa(cnt)
            }
            pre=param[i]
            cnt=1
        }
    }
    ans+=string(pre)
    if cnt>1{
        ans+=strconv.Itoa(cnt)
    }
    return ans
}

发表于 2023-03-06 21:30:41 回复(0)