演算法--字串壓縮
阿新 • • 發佈:2019-01-07
問題:字串壓縮演算法:利用字元重複出現的次數,實現基本的字串壓 縮演算法,比如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; }
}