我菜爆了 什么都没写出来。
题目
https://leetcode-cn.com/problems/string-compression/
分析
利用双指针。
初始状态:左指针指向0,右指针指向0。
右指针字符与左指针字符不相等时:将元素及其数量更新在数组中。将左指针指向右指针。
遍历到最后一个字符时也要结算,所以right<=len。
代码
class Solution {
public int compress(char[] chars) {
int len=chars.length;
int left=0;
int size=0;
for(int right=0;right<=len;right++){
if(right==len||chars[right]!=chars[left]){
chars[size++]=chars[left];
for(char c:String.valueOf(right-left).toCharArray()){
if(right-left>1)
chars[size++]=c;
}
left=right;
}
}
return size;
}
}
复杂度
时间O(N)
空间O(1)