判斷字串是否包含重複字元 java
阿新 • • 發佈:2018-11-19
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"); } }