Leetcode Anagrams

題目:

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

Note: All inputs will be in lower-case.


解題:

這題目真心沒說明白,看別人博客才懂的題意,看懂以後基本就可以搞了。

我直接兩個map搞

第一次把單詞映射到排序後的單詞,第二次把排序後的單詞映射成數字,每映射成數字一次,數字+1。

最後輸出兩次map後大於1的即可


代碼:

class Solution {
public:
    vector<string> anagrams(vector<string> &strs) {
        int nr[strs.size()];
        memset(nr, 0, sizeof(nr));
        map<string, string> mp;
        map<string, int> mpCnt;
        for(int i = 0; i < strs.size(); i ++) {
            string tmp = strs[i];
            sort(tmp.begin(), tmp.end());
            mp[strs[i]] = tmp;
            if(mpCnt.find(tmp) == mpCnt.end())
                mpCnt[tmp] = 1;
            else
                mpCnt[tmp] ++;
        }
        vector<string> ans;
        for(int i = 0; i < strs.size(); i ++) {
            if(mpCnt[mp[strs[i]]] > 1)
                ans.push_back(strs[i]);
        }
        return ans;
    }
};


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