题目描述:
字符串压缩。利用字符重复出现的次数,编写一种方法,实现基本的字符串压缩功能。比如,字符串aabcccccaaa会变为a2b1c5a3。若“压缩”后的字符串没有变短,则返回原先的字符串。你可以假设字符串中只包含大小写英文字母(a至z)。
示例1:
输入:"aabcccccaaa"
输出:"a2b1c5a3"
示例2:
输入:"abbccd"
输出:"abbccd"
解释:"abbccd"压缩后为"a1b2c2d1",比原字符串长度更长。
提示:
字符串长度在[0, 50000]范围内。
解答思路:
开辟一个新的字符串,然后遍历原先的字符串,然后按照规则添加到新的字符串中。
1 class Solution { 2 public String compressString(String S) { 3 if(S.length()==0){ 4 return S; 5 } 6 StringBuffer ans=new StringBuffer(); 7 int cnt=1; 8 char c=S.charAt(0); 9 for(int i=1;i<S.length();i++){ 10 if(c==S.charAt(i)){ 11 cnt++; 12 } 13 else{ 14 ans.append(c); 15 ans.append(cnt); 16 c=S.charAt(i); 17 cnt=1; 18 } 19 } 20 ans.append(c); 21 ans.append(cnt); 22 if(ans.length()>=S.length()) 23 return S; 24 else 25 return ans.toString(); 26 27 } 28 }
浙公网安备 33010602011771号