CC150 : String Compression



class Solution {
public String compress(String str) {
int size = countCompression(str); //先check compress之后的size,若更大,返回原string。
if(size >= str.length()) return str;
StringBuffer sb = new StringBuffer();
char last = str.charAt(0);
int count = 1;
for(int i = 1; i < str.length(); i++) {
if(str.charAt(i) == last) {
count++;
} else {
sb.append(last);
sb.append(count);
last = str.charAt(i);
count = 1;
}
}
sb.append(last);
sb.append(count);
return sb.toString();
}

private int countCompression(String str) {
if(str == null || str.isEmpty()) return 0;
char last = str.charAt(0);
int size = 0, count = 1;
for(int i = 1; i < str.length(); i++) {
if(str.charAt(i) == last) {
count++;
} else {
size += 1 + String.valueOf(count).length();
last = str.charAt(i);
count = 1;
}
}
size += 1 + String.valueOf(count).length();
return size;
}
}


posted @ 2015-02-17 06:26  江南第一少  阅读(242)  评论(0)    收藏  举报