1. 程式人生 > >判斷字串是否包含重複字元 java

判斷字串是否包含重複字元 java

public class IsStringRepeat {

    /**
     * 判斷字串是否重複,假設字串只有ASCII碼,字元最多256個
     * @param str
     */
    private static boolean isStringRepeatAsc(String str){
        if (str.length() > 256){
            return false;
        }

        int[] strCount = new int[256];
        for (int i = 0; i< str.length(); i++) {
            int asc_index = (int)str.charAt(i);
            if (strCount[asc_index] != 0){
                return false;
            }
            strCount[asc_index] += 1;
        }
        return true;
    }

    /**
     * 假設字串時unicode碼,字串很多,無法通過長度判斷
     * @param str
     */
    private static boolean isStringRepeatUnicode(String str){
        if (null == str || "" == str){
            return false;
        }

        for (int i=0; i<str.length()-1;i++){
            for (int j=i+1;j<str.length();j++){
                if (str.charAt(i) == str.charAt(j)){
                    return false;
                }
            }
        }

        return true;
    }

    /**
     * 
     * @param str
     * @return
     */
    private static boolean isStringRepeatUnicode2(String str){
        if (null == str || "" == str){
            return false;
        }
        char[] strArray = str.toCharArray();
        Arrays.sort(strArray);

        for (int i=0;i<strArray.length-1;i++){
            if (strArray[i] == strArray[i+1]){
                return false;
            }
        }

        return true;
    }

    public static void main(String[] args) {
        boolean result1 = isStringRepeatAsc("123456789 ert");
        boolean result2 = isStringRepeatUnicode2("123 ewqq");
    }
}