Anagrams

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

Note: All inputs will be in lower-case.

C++:
01 class Solution {
02 public:
03     vector<string> anagrams(vector<string> &strs) {
04         // Start typing your C/C++ solution below
05         // DO NOT write int main() function
06         map<vector<int>, vector<string>> A;
07         vector<string> result;
08         for(int i=0;i<strs.size();i++)
09         {
10             vector<int> tmp(26);
11             for(int j=0;j<strs[i].size();j++)
12             {
13                 int c=strs[i][j]‘a’;
14                 tmp[c]++;
15             }
16             if(A.find(tmp)!=A.end())
17             {
18                 A[tmp].push_back(strs[i]);
19             }
20             else
21             {
22                 vector<string> t(1,strs[i]);
23                 A[tmp]=t;
24             }
25         }
26         map<vector<int>, vector<string>>::iterator it;
27         for(it=A.begin();it!=A.end();it++)
28         {
29             vector<string> tmp=it->second;
30             if(tmp.size()>=2)
31             {
32                 for(int i=0;i<tmp.size();i++)
33                 {
34                     result.push_back(tmp[i]);
35                 }
36             }
37         }
38         return result;
39     }
40 };
Advertisements
This entry was posted in Uncategorized. Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s