LeetCode49 字母異位詞分組

2021-09-12 15:47:30 字數 1411 閱讀 3821

給定乙個字串陣列,將字母異位片語合在一起。字母異位詞指字母相同,但排列不同的字串。

示例:

輸入: ["eat", "tea", "tan", "ate", "nat", "bat"],

輸出:[

["ate","eat","tea"],

["nat","tan"],

["bat"]

]

說明:

所有輸入均為小寫字母。

不考慮答案輸出的順序。

設定乙個map向量,專門用來統計字串中,所有字元出現的頻率,比較一下即可

這個方法在實現過程中遇到了不少問題,乙個是時間複雜度太高,所以我使用快速排序,按照字串長度從小到大進行排序,如此一來可以大幅減少時間

c++**:

class solution 

// 獲取匹配字串資訊

for (int j = 0; j < temp[0].size(); j++)

// 開始匹配

for (int i = 0; i < strs.size(); i++)

if (hash_char2.empty())

}ans.push_back(temp);

temp.clear();

hash_char.clear();

hash_char2.clear();

} return ans;

} // 下面兩個函式都是快排演算法

void sort_str_len(vector& strs, int begin, int end)

int partition_len(vector& strs, int p1, int p2)

} s = strs[p2];

strs[p2] = strs[i + 1];

strs[i + 1] = s;

i = i + 1;

return i;

}};

執行效率:

太慢了。看來要換一種方法。

如果兩個字串僅僅是排序不同,那麼可以通過sort函式,使得字串按照字母的ascii大小公升序排序,重新排列,這樣就很容易的判斷兩個字串是否為字母異位詞了。

c++**:

class solution 

for (auto temp : hash_t)

ans.push_back(temp.second);

return ans;

}};

執行效率

LeetCode 49 字母異位詞分組

給定乙個字串陣列,將字母異位片語合在一起。字母異位詞指字母相同,但排列不同的字串。示例 輸入 eat tea tan ate nat bat 輸出 ate eat tea nat tan bat 說明 所有輸入均為小寫字母。不考慮答案輸出的順序。這道題的意思就是把含有相同字母的單詞歸類而已,思路其實...

LeetCode 49 字母異位詞分組

給定乙個字串陣列,將字母異位片語合在一起。字母異位詞指字母相同,但排列不同的字串。示例 輸入 eat tea tan ate nat bat 輸出 ate eat tea nat tan bat 說明 此題輸入的是乙個字串陣列,遍歷該陣列,然後將每個字串排序,排序後的字串作為 鍵 存入雜湊表,對應的...

leetcode 49 字母異位詞分組

leetcode 49.字母異位詞分組 給定乙個字串陣列,將字母異位片語合在一起。字母異位詞指字母相同,但排列不同的字串。演算法1 根據字典序排序後相同的兩個字串是字母異位詞 將字串陣列中的每個字串進行排序,排序後相同的字串被分到相同的組別 演算法在輸入規模較大的情況下超時 演算法2 對於字串列表中...