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;
}
};