程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA編程入門知識 >> 刪除字符串中重復的字符

刪除字符串中重復的字符

編輯:JAVA編程入門知識

描述

刪除字符串中重復的字符

 

分析

方法一,蠻力法。兩個循環,大循環每次從數組中取出一個字符,小循環重新遍歷該數組是否含有該字符。
方法二:排序法。對兩個字符串的字符進行排序,再比較。
方法三:空間換時間。acsII共256個字符。使用256bit記錄每個字符是否已出現過。遍歷字符串,若已出現過則將該字符替換為'\0'
方法四:正則表達式。"(?s)(.)(?=.*\\1)"

 

代碼

方法三,空間換時間。

public class Test {
    public static String removeDuplucate(String str){
        char[] chars=str.toCharArray();
        int len=chars.length;
        int[] flag=new int[8]; //有8*32=256bit空間,每一bit代表字符是否出現過。
        for(int i=0;i<len;i++){
            int index=(int)chars[i]/32;
            int shift=(int)chars[i]%32;
            if((flag[index]&(1<<shift))!=0)
                chars[i]='\0';
            flag[index]|=(1<<shift);
        }

        int j=0;
        for(int i=0;i<len;i++){
            if(chars[i]!='\0')
                chars[j++]=chars[i];
        }
        return new String(chars,0,j);

    }
    public static void main(String[] args) {
        System.out.println(removeDuplucate("zayyyy"));
    }
}

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved