1. 程式人生 > >演算法--字串壓縮

演算法--字串壓縮

問題:字串壓縮演算法:利用字元重複出現的次數,實現基本的字串壓 縮演算法,比如aabbbccceeee變為a2b3c3e4,壓縮後的字串沒有變短,則返回原來的字串(這裡指的是abcdef,這樣就會變為a1b1c1d1e1f1。
思路:
1,先比較壓縮後字串的長度。
定義一個總長度初始化為0,
再定義一個字元出現的次數為1,
取到字串的第一個字元,
注意後面在迴圈時,要從1開始了,否則會造成重複比較。從而
使得第一字元計數加1.
開始迴圈比較,要是字元相等,則次數加1,
要是不等則加到長度,次數重新初始化,取到的字元也響應變化。
最後結束迴圈後,還要對長度加一次,否則最後一個字元不會被記錄。


2,比較字元實際上是在長度上進行改進的,只是利用了StringBuffer,對字元進行拼接。也要注意迴圈是從1開始
原始碼:

public class acciizifu {
public static void main(String[] args) {
    //
    String s="abcdefg";
    System.out.println(hasSameLetter(s));
}

private static boolean hasSameLetter(String s){
    boolean[] array=new boolean[128];  //預設false
    //迴圈s中的每一個字元
    for(int i=0;i<s.length();i++){
        char ch=s.charAt(i);//返回指定索引處的 char 值
        //System.out.println(ch+"\t");
        if(array[ch]==true){
            return true;
        }else{
            array[ch]=true;
        }
    }
    //轉成一個int

    //根據int 找到array中對應的下標,判定它是否為false,如果是改為true 則為重複的,返回false
return false;

}

}