导航

面试金典 字符串类1.基本字符串压缩

Posted on 2015-08-22 18:46  骄阳照林  阅读(141)  评论(0编辑  收藏  举报

题目描述

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

给定一个string iniString为待压缩的串(长度小于等于3000),保证串内字符均由大小写英文字母组成,返回一个string,为所求的压缩后或未变化的串。

测试样例
"aabcccccaaa"
返回:"a2b1c5a3"
 
"welcometonowcoderrrrr"

返回:"welcometonowcoderrrrr"

代码如下:
import java.util.*;

public class Zipper {
    public String zipString(String iniString) {
         int len=iniString.length();
        StringBuilder sb=new StringBuilder();
        for(int i=0;i<len;){
              int num=1;
              char t1=iniString.charAt(i);
              int j=i+1;
            for(;j<len;j++){
                char t2=iniString.charAt(j);
                if(t1==t2) num++;
                else{
                    sb.append(t1+""+num);
                    System.out.println(sb.toString());
                    break;
                }     
            }
            if(j==len) {
            	sb.append(t1+""+num);
            	break;
            }
            i=j;
            
        }
        if(sb.length()>=len)
            return iniString;
        else
            return sb.toString();
    }
}