基本字串壓縮

王世暉發表於2016-04-06

基本字串壓縮

  • 時間限制:3秒空間限制:32768K
  • 本題知識點: 字串

題目描述

利用字元重複出現的次數,編寫一個方法,實現基本的字串壓縮功能。比如,字串“aabcccccaaa”經壓縮會變成“a2b1c5a3”。若壓縮後的字串沒有變短,則返回原先的字串。

給定一個string iniString為待壓縮的串(長度小於等於3000),保證串內字元均由大小寫英文字母組成,返回一個string,為所求的壓縮後或未變化的串。

測試樣例
"aabcccccaaa"
返回:"a2b1c5a3"
"welcometonowcoderrrrr"
返回:"welcometonowcoderrrrr"

public class Main {
    public  static void main(String[] args){
        Main m=new Main();
        System.out.print(m.zipString("aabcccccaaa"));
    }
    public String zipString(String iniString) {
        StringBuilder sb=new StringBuilder();
        /*記錄字元出現的次數*/
        int count=1;
        /*獲得字元陣列*/
        char[] array=iniString.toCharArray();
        /*記錄連續的字元*/
        Character lastChar=array[0];
        sb.append(lastChar);
        for(int i=1;i<array.length;i++){
            /*連續字元的情況*/
            if(array[i]==lastChar){
                count++;
            }else{
                /*新字元出現,輸出上一個字元的出現次數*/
                sb.append(count);
                /*重新置位*/
                lastChar=array[i];
                sb.append(lastChar);
                count=1;
            }
        }
        /*注意最後一個字元的出現次數*/
        sb.append(count);
        String result=sb.toString();
        /*壓縮後的長度不能更長*/
        if(result.length()>=iniString.length()){
            return iniString;
        }else{
            return sb.toString();
        }
    }
}


相關文章