每日一题 为了工作 2020 04011 第四十题

/**
 * 
 * 问题:
 *    判断字符数组中是否所有的字符都只出现一次
 *    给定一个字符类型的数组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();
	}
}

  

*运行结果

 

猜你喜欢

转载自www.cnblogs.com/walxt/p/12678750.html
今日推荐