求第一个无重复字符

来源:互联网 发布:剑灵四糸乃捏脸数据 编辑:程序博客网 时间:2024/05/06 17:49

转自:http://www.javaeye.com/topic/399476

 

求第一个无重复字符,如"total"的第一个无重复字符是o,"teeter"的第一个无重复字符是r,效率要优于O(n的平方)

 

public class Tongji {
        public static void main(String arg[]){ 
                String test = "tatleae"; 
                char[] array = test.toCharArray(); 
             
                for(char tmp : array){ 
             
                    if(test.indexOf(tmp)==test.lastIndexOf(tmp)){ 
                        System.out.println(tmp); 
                        break; 
                   } 
               } 
           }  //这个代码段,但是效率没有达到O(n)
        /*
             public static void main(String arg[]){ 
        String test = "tatle"; 
        char[] array = test.toCharArray(); 
        LinkedHashMap<String, Integer> map = new LinkedHashMap<String, Integer>(); 
        for(char tmp : array){ 
            String str = tmp+""; 
            if(map.get(str)==null){ 
               map.put(str, 1); 
            }else{ 
               map.put(str, 0); 
           } 
            
       } 
    
       for(Entry<String, Integer> tmp : map.entrySet()){ 
           if(tmp.getValue()!=null&&tmp.getValue()==1){ 
               System.out.println(tmp.getKey()); 
               break; 
           } 
       } 
        
   } 
         */
}

 

//下面这种方法也是转自的刚才的网址的 代码不长,但是效率好像比较高

public static void main(String arg[]){
        String str="tatle";
        if (null == str) return; 
              
             char[] base = new char[Character.MAX_VALUE]; 
               
             char[] arr = str.toCharArray(); 
             for (char item : arr) { 
                 base[item]++; //可以直接统计base['t']出现的次数
                 System.out.print(" "+(int)base[item]); 
             } 
             int value = -1; 
            for (char item : arr) {
                //System.out.print(" "+base[item]); 
                 if (base[item] == 1) { 
                     value = item; 
                     break; 
                 } 
             } 
             if (value == -1) { 
                 System.out.println("没找到"); 
             } else { 
                 System.out.println((char)value); 
             }  
    }

 

原创粉丝点击