443. 压缩字符串
分析
-
遍历字符数组:
- 使用两个指针,一个
i
遍历原数组,另一个k
表示压缩后字符存储的位置
- 使用两个指针,一个
-
记录连续重复字符:
- 每次找到一组连续重复的字符,记录其长度
len
- 每次找到一组连续重复的字符,记录其长度
-
压缩字符组:
- 将字符写入结果数组。
- 如果长度
len > 1
,将其转为字符串形式逐个写入,需要使用std::reverse
处理因低位数字先写入导致的顺序问题
-
更新指针:
- 将指针
i
移动到下一个未处理的字符位置
- 将指针
-
返回结果:
- 最终返回数组新长度
k
- 最终返回数组新长度
时间复杂度
- 遍历整个数组一次,时间复杂度为
O(n)
总时间复杂度 O(n)
空间复杂度
空间复杂度为 O(1)
C++代码
|
|