[Leetcode] Anagrams


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

Note: All inputs will be in lower-case.

這題先得知道啥叫Anagrams,知道后其實很簡單。

首先簡單介紹一下Anagram(回文構詞法)。Anagrams是指由顛倒字母順序組成的單詞,比如“dormitory”顛倒字母順序會變成“dirty room”,“tea”會變成“eat”。

回文構詞法有一個特點:單詞里的字母的種類和數目沒有改變,只是改變了字母的排列順序。

For example:

Input:  ["tea","and","ate","eat","den"]

Output:   ["tea","ate","eat"]

 1 class Solution {
 2 public:
 3     vector<string> anagrams(vector<string> &strs) {
 4         string s;
 5         map<string, int> anagram;
 6         vector<string> res;
 7         for (int i = 0; i < strs.size(); ++i) {
 8             s = strs[i];
 9             sort(s.begin(), s.end());
10             if (anagram.find(s) == anagram.end()) {
11                 anagram[s] = i;
12             } else {
13                 if (anagram[s] >= 0) {
14                     res.push_back(strs[anagram[s]]);
15                     anagram[s] = -1;
16                 }
17                 res.push_back(strs[i]);
18             }
19         }
20         return res;
21     }
22 };

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM