刪除字符串中重復的字符


描述

刪除字符串中重復的字符

 

分析

方法一,蠻力法。兩個循環,大循環每次從數組中取出一個字符,小循環重新遍歷該數組是否含有該字符。
方法二:排序法。對兩個字符串的字符進行排序,再比較。
方法三:空間換時間。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"));
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM