壓縮字符串(科大訊飛)

1.題目要求

輸入:aaabbce

輸出:   3a2bce

2.實現思路

step1:定義一個StringBuffer用來拼接後來新生成的字符串。

step2:定義開始指針start=0,定義第二個指針j=start+1,遍歷字符串中的每一項當指針當前指向的字符和它後面的元素有相同的時候sum++,sum初始爲1,判斷sum值

  • 當sum值>2時,輸出sum值
  • 輸出此時start指針指向的字符值

step3:將start值重新賦值爲start+sum

3.代碼實現

public class CompressString {

    public static String compressString(String s){
        if(s==null||s.length()==0)
            return "";

        char[] chars=s.toCharArray();
        StringBuffer sb=new StringBuffer();
        int start=0;
        while(start<chars.length){
            int sum=1;
            for(int j=start+1;j<chars.length;j++){
                if(chars[start]==chars[j]){
                    sum++;
                }
            }
            if(sum>1){
                sb.append(sum);
            }
            sb.append(chars[start]);
            start=start+sum;
        }
       return sb.toString();
    }

    @Test
    public void test1(){
        String s="aaabbce";
        String result=compressString(s);
        System.out.println(result);
    }

    @Test
    public void test2(){
        String s="aaaaaaaa";
        String result=compressString(s);
        System.out.println(result);
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章