题目:字符串压缩
利用字符重复出现的次数,编写一种方法,实现基本的字符串压缩功能。比如,字符串aabcccccaaa会变为a2b1c5a3。若“压缩”后的字符串没有变短,则返回原先的字符串。你可以假设字符串中只包含大小写英文字母(a至z)
1
2
3
4
5
6
7
8
9
10
11# 样例1
输入:"aabcccccaaa"
输出:"a2b1c5a3"
# 样例2
输入:"abbccd"
输出:"abbccd"
解释:"abbccd"压缩后为"a1b2c2d1",比原字符串长度更长。
# 提示:
字符串长度在[0, 50000]范围内。
解题方法:
- 遍历模拟:两层遍历,内层用
while
,判断当前字符连续出现了多少个
时间复杂度为O(n),空间复杂度为O(n),用于存储生成的字符串
解法一:
- 强制类型转化:想把
int
转为对应的字符,不可以用char()
,因为这样会转化到对应的ASCII表中的字符,需要用to_string()
来转化,转换完为string
类型 S.push_back(char c)
:push_back()函数只能在字符串末尾添加字符,而不能是字符串S.insert(int pos, string s)
:insert()函数只能在pos
后面添加字符串,而不能是字符。如果pos==S.size()
时,可以直接用加号S = S + s
就可以了
1 | class Solution { |