剣指オファーインタビュー質問50. 1回だけ現れる最初の文字[Simple] -unordered_map

私の解決策:

unordered_mapとベクターを使用する

unordered_mapとmapの違いに注意してください。

マップ内の要素は、二分探索木に従って格納され、中位トラバーサルを使用して、キー値を小さい値から大きい値にトラバースできます。(赤黒木
 は内部的に実装されていますunordered_mapは内部的にハッシュテーブル(ハッシュテーブルとも呼ばれます)を実装しており、キーコード値をハッシュテーブル内の場所にマッピングすることによってレコードにアクセスします。検索の時間の複雑さはO(1)に達する可能性があります。 、大規模なデータ処理で広く使用されています)。要素の配置順が乱れています。(挿入順ではなく、順不同です。この質問は挿入順に行われたと思っていたので、最初の例では通じませんでした...長い間探していました)

PS:私はまだ赤と黒の木を知りませんので、学ぶ必要があります!学ぶ!

class Solution {
public:
    char firstUniqChar(string s) {
        if(s.empty())   return ' ';
        unordered_map<char,int> m;
        vector<char> vec;
        for(char c:s){
            if(m.count(c))  m[c]++;
            else{
                vec.push_back(c);
                m[c]=1;
            }
        }
        for(int i=0;i<vec.size();i++){
            if(m[vec[i]]==1)    return vec[i];
        }
        return ' ';
    }
};

オリジナルの記事を65件公開 Like1 訪問者483

おすすめ

転載: blog.csdn.net/qq_41041762/article/details/105478317