/** * * 问题: * 判断字符数组中是否所有的字符都只出现一次 * 给定一个字符类型的数组chars[],判断 chars中是否所有的字符都只出现过一次。 * * 要求: * 时间复杂度为 O(N) * 解答: * 遍历一遍 chars, 用 map记录每种字符的出现情况, 这样就可以在遍历时发现字符重复 * 出现的情况, map可以用长度固定的数组实现, 也可以用哈希表实现。 * * @author 雪瞳 * */
public class IsUniquel { public static boolean isUniquel(char chars[]){ if(chars == null){ return true; } boolean map[] = new boolean[256]; for(int i=0;i<chars.length;i++){ if(map[chars[i]]){ return false; } map[chars[i]]=true; } return true; } }
public class TestIsUniquel { public static void main(String[] args) { char chars1[] ={‘a‘,‘b‘,‘c‘}; char chars2[] ={‘a‘,‘b‘,‘c‘,‘b‘}; boolean result1 = IsUniquel.isUniquel(chars1); showCharArray(chars1); showResult(result1); boolean result2 = IsUniquel.isUniquel(chars2); showCharArray(chars2); showResult(result2); } public static void showResult(boolean flag){ if(flag){ System.err.println("各个字符元素均出现一次"); }else{ System.err.println("存在字符元素出现多次"); } } public static void showCharArray(char array[]){ for (char arr : array) { System.err.print(arr+"\t"); } System.out.println(); } }
*运行结果
原文地址:https://www.cnblogs.com/walxt/p/12678750.html
时间: 2024-11-09 04:09:14