字符串压缩

利用字符重复出现的次数,编写一个方法,实现基本的字符串压缩功能。比如,字符串“aabcccccaaa”经压缩会变成“a2b1c5a3”。若压缩后的字符串没有变短,则返回原先的字符串。

算法思路

新建一个字符串,设置一个指针,一个计数器,指针从0开始,与前一个字母相同的情况下,计数器加一,不相同就把字符和数字都拼接到新字符串后。知道指针指向字符串最后一个字符,再将此时的字符和数组拼接到新字符串后。

代码实现

public class Zipper {
	  public static String zipString(String iniString) {
	        // write code here
	        String str="";  
	        char ch = iniString.charAt(0);  
	        int count = 1;  
	        for (int i = 1; i < iniString.length(); i++){  
	            if (iniString.charAt(i) == ch){  //相等计数器加一
	                count++;  
	            }  
	            else{  //不相等将字符和数字都添加到新字符串后,并跟新字符。
	                str+=ch;  
	                str+= count;  
	                count = 1;  
	                ch = iniString.charAt(i);  
	            }  
	        }  
	        //循环结束后,还有一组字符和数字没添加
	        str+=ch;  
	        str += count;  
	        //比较新老数组长度
	        return str.length() < iniString.length() ? str : iniString;  
	        }  
	}
}
 
posted @ 2017-08-15 17:12  Lee_Shuai  阅读(418)  评论(0编辑  收藏  举报