[leetcode] anagrams

Given an array of strings, return all groups of strings that are anagrams.

Note: All inputs will be in lower-case.

這題原本思路搞得很複雜:1.統計每個string中每個字符的出現次數,然後用“a1b5y4”的形式表示每個字符串。------>其實只要複製string到一個新的vector,然後sort這個字符串就行了。

2. 對於如何弄hash表也搞得很複雜,甚至還搞了個錶轉換……a) 利用map的[ ](!!!!!!),如果map中不含有這個key,則自動插入!!不需要搞什麼查找。所以說map是STL中比較好的實現hashtable的工具。
                                                                                         b)
map<string, vector<string> >


class Solution {
public:
    vector<string> anagrams(vector<string> &strs) {
        // Start typing your C/C++ solution below
        // DO NOT write int main() function
        vector<string> result;
        int size = strs.size();
        if (size < 2 )
            return result;
            
        vector<string> temp;
            
        map<string, vector<string> > changeRes;
        for (int i = 0; i < size; i++){
            temp.push_back(strs[i]);
            sort(temp[i].begin(),temp[i].end());
            changeRes[temp[i]].push_back(strs[i]);
        }
           // change(strs, i ,changeRes);
            
        map<string, vector<string> >::iterator iter = changeRes.begin();
        while(iter != changeRes.end()){
            if ((iter->second).size() > 1){
                for (int i = 0; i< (iter->second).size(); i++)
                    result.push_back((iter->second)[i]);
            }
            iter++;
        }
        return result;
    }
};



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