版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Chengliangyao/article/details/83064711
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"); } }