• 每日一题 为了工作 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+"	");
    		}
    		System.out.println();
    	}
    }
    

      

    *运行结果

     

  • 相关阅读:
    BZOJ1316 树上的询问
    BZOJ2599 IOI2011Race
    BZOJ2594 [Wc2006]水管局长数据加强版
    BZOJ3052 [wc2013] 糖果公园 【树上莫队】
    BZOJ4530 BJOI 2014 大融合
    QTREEⅠ SPOJ
    BZOJ 3514: Codechef MARCH14 GERALD07加强版 [LCT 主席树 kruskal]
    BZOJ3669 NOI2014魔法森林
    BZOJ2002 弹飞绵羊
    BZOJ1878 [SDOI2009]HH的项链
  • 原文地址:https://www.cnblogs.com/walxt/p/12678750.html
Copyright © 2020-2023  润新知