ソードフィンガーオファーインタビュー質問50:一度だけ現れる最初のキャラクター

答えを見ずに10分以上質問を終えるのは初めてです。

私の考えは、文字の出現回数を格納するために、長さが26のint配列を作成することです。

最初に文字列を1回トラバースし、出現回数を数えます。

文字列をもう一度トラバースして、最初の値が1である回数に対応する文字を見つけます。

 

答えに使用したハッシュマップはほとんど同じなので、もう書きません。

 

 

 

    public char firstUniqChar(String s) {
        if(s.equals("")){
            return ' ';
        }
        char[] s_c = s.toCharArray();
        int[] s_c_count = new int[26];
        for(int count = 0; count<26;count++){
            s_c_count[count] = 0;
        }
        for(int count = 0;count<s_c.length;count++){
            s_c_count[s_c[count] - 'a']++;
        }
        for(int count = 0;count<s_c.length;count++){
            if(s_c_count[s_c[count] - 'a'] == 1){
                return s_c[count];
            }
        }
        return ' ';
    }

 

おすすめ

転載: blog.csdn.net/qq_40473204/article/details/114635692