牛客網|基本文字列圧縮

1340 ワード

タイトルの説明
文字が繰り返される回数を利用して、基本的な文字列圧縮機能を実現する方法を作成します.たとえば、文字列「aabcccccaaa」は圧縮されて「a 2 b 1 c 5 a 3」になります.圧縮された文字列が短くならない場合は、元の文字列を返します.
1つのstring iniStringが圧縮される列(長さが3000以下)であることを指定し、列内の文字が大文字と小文字の英字からなることを保証し、stringを返し、求めた圧縮後または変化しない列である.
テストサンプル
"aabcccccaaa"
  :"a2b1c5a3"
"welcometonowcoderrrrr"
  :"welcometonowcoderrrrr"
import java.util.*;

public class Zipper {
    public String zipString(String iniString) {
        // write code here
        if(iniString==null||iniString.trim().length()==0) return "";
        char p = iniString.charAt(0);
        StringBuilder stringBuilder = new StringBuilder("");
        int count = 1;
        for (int i=1;i<iniString.length();i++)
        {
            if(p==iniString.charAt(i))
                count++;
            else
            {
                stringBuilder.append(p+""+count);//     
                p = iniString.charAt(i);
                count=1;
            }

        }
        stringBuilder.append(p+""+count);
        if(stringBuilder.length()>iniString.length())
            return iniString;
        else
            return stringBuilder.toString();

    }
}