面試題--01

之前在面試的時候碰到的小題目,不難,但是對於這道題的解法還是有很多意思的。

求字符串中出現的第一個不重複的字符 如acdefcad 返回 e

解法一:先將字符串變成字符數組,利用HashMap存儲字符,key爲字符,value爲字符的個數。最後從頭開始循環字符數組並與HashMap對比得到結果。

    String str = "fjSfjldsjfdlsJFLjfdjfkldsJFFFFFFFFJJJJJFASDjkfsdlfjalsfjdlsaf"; 

        char[] message = str.toCharArray();

        Map<String,Integer> map = new HashMap<String,Integer>(); 
        for(char i :message){
            if(map.containsKey(String.valueOf(i))){
                map.put(String.valueOf(i), map.get(String.valueOf(i))+1);
            }else{
                map.put(String.valueOf(i), 1);
            }
        }
        for (int i = 0; i < message.length; i++) {
            if(map.containsKey(String.valueOf(message[i]))&&map.get(String.valueOf(message[i]))==1){
                System.out.println("該字符串中出現的第一個不重複的字符是: "+message[i]);
                break;
            }
        }

解法二:與第一種方法大致一樣,但使用的是LinkedHashMap,LinkedHashMap的特點是能夠記住插入的順序,換言之,循環LinkedHashMap找到第一個Value值爲1的key就是題解。

解法三:使用String的相關方法。

參考:如何在字符串中找到第一個不重複的字符

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章