字符串压缩。利用字符重复出现的次数,编写一种方法,实现基本的字符串压缩功能。比如,字符串aabcccccaaa会变为a2b1c5a3。若“压缩”后的字符串没有变短,则返回原先的字符串。你可以假设字符串中只包含大小写英文字母(a至z)。
class Solution {
public String compressString(String S) {
StringBuffer sb = new StringBuffer();
Set<Character> set = new HashSet<>();
String ss = S + "0";//因为后面是将c[i-1]给append进sb中的,需要再补一个末位
char[] c = ss.toCharArray();
int len = ss.length();
int count=0;
for(int i=1;i<len;i++){
set.add(c[i-1]);
if(!set.add(c[i])){//如果放不进去,重复
count++;
continue;
}
sb.append(c[i-1]);//出现不重复的,就把前一个放进去
sb.append(Integer.toString(count+1));//因为个数可能超过10,所以这里添加字符串
count=0;
set.clear();
}
if(sb.toString().length()>=S.length()){
return S;
}
return sb.toString();
}
}