字符串压缩
描述
设计一种方法,通过给重复字符计数来进行基本的字符串压缩
例如,字符串 aabcccccaaa 可压缩为 a2b1c5a3 。而如果压缩后的字符数不小于原始的字符数,则返回原始的字符串。
可以假设字符串仅包括 a-z 的字母。
样例
样例 1:
输入:str = "aabcccccaaa"
输出:"a2b1c5a3"
样例 2:
输入:str = "aabbcc"
输出:"aabbcc"
代码
public class Solution {
/**
* @param originalString: a string
* @return: a compressed string
*/
public String compress(String originalString) {
// write your code here
if(originalString==null||originalString.length()==0){
return "";
}
char[] chars = originalString.toCharArray();
char lastChar = originalString.charAt(0);
int count = 0;
StringBuffer sb = new StringBuffer();
for(char c:chars){
if(lastChar == c){
count++;
}else{
sb.append(lastChar).append(count);
lastChar=c;
count=1;
}
}
sb.append(lastChar).append(count);
if(sb.length()<originalString.length()){
return sb.toString();
}
return originalString;
}
}
解析
题目简单