空间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();
    }
}