空间O(1)时间O(N)解法:只需用一个count记录上一个字符出现的次数即可,如果count=1则直接向结果追加字母,不加数字,如果count>1才追加出现的次数。
public class Solution {
public String compressString (String param) {
// write code here
StringBuilder res = new StringBuilder();
if(param.length()<=1)return param;
int count = 1;
for(int i=1;i<param.length();++i){
if(param.charAt(i)==param.charAt(i-1)){
count++;
}
else {
if(count==1){
res.append(param.charAt(i-1));
}
else {
res.append(param.charAt(i-1)+""+count);
count=1;
}
}
}
if(count==1) res.append(param.charAt(param.length()-1));
else res.append(param.charAt(param.length()-1)+""+count);
return res.toString();
}
}