压缩字符串

该博客讨论了一种字符串压缩方法,通过计数连续重复的字符来压缩字符串。例如,'aabcccccaaa' 将变为 'a2b1c5a3'。如果压缩后的字符串长度没有减少,则保持原样。博客介绍了采用双指针法实现的思想,并提供了相关代码示例。
摘要由CSDN通过智能技术生成

题目:
字符串压缩。利用字符重复出现的次数,编写一种方法,实现基本的字符串压缩功能。比如,字符串aabcccccaaa会变为a2b1c5a3。
若“压缩”后的字符串没有变短,则返回原先的字符串。你可以假设字符串中只包含大小写英文字母(a至z)。
示例:
示例1:

输入:“aabcccccaaa”
输出:“a2b1c5a3”

示例2:

输入:“abbccd”
输出:“abbccd”
解释:“abbccd"压缩后为"a1b2c2d1”,比原字符串长度更长。

思想: 类似双指针法,一前一后判断是否相等。

  • 两个变量同时开始遍历数组,count初始化为1,若s[i]==s[j],则count++,j++进行计数。
  • 如果s[i]!=s[j],i=j,则将s[i]和count连接为字符串,count=1,进行下一轮统计。
  • 最后判断压缩后字符串的长度。
  • count为出现的次数,和字符串连接需要先转换为字符串,用到to_string(count)函数。
    举例如下图:
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值