深圳网站设计兴田德润放心,石家庄网站建设蓝龙,网站开发平台是什么,外贸快车做网站怎么样字母异位词分组 题目及要求哈希算法在主函数内使用 题目及要求
给你一个字符串数组#xff0c;请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。
字母异位词 是由重新排列源单词的所有字母得到的一个新单词。
示例 1:
输入: strs [“eat”, “tea”, “tan”… 字母异位词分组 题目及要求哈希算法在主函数内使用 题目及要求
给你一个字符串数组请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。
字母异位词 是由重新排列源单词的所有字母得到的一个新单词。
示例 1:
输入: strs [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”] 输出: [[“bat”],[“nat”,“tan”],[“ate”,“eat”,“tea”]] 示例 2:
输入: strs [“”] 输出: [[“”]] 示例 3:
输入: strs [“a”] 输出: [[“a”]]
提示
1 strs.length 104 0 strs[i].length 100 strs[i] 仅包含小写字母
哈希算法
思路对于第一个字符串 “eat”将其保存到临时变量 data 中并对其进行排序得到 “aet”。在哈希表中找到键为 “aet” 的项发现不存在则创建该键并将原始字符串 “eat” 加入到值的向量中。 对于第二个字符串 “tea”同样保存到 data 中并排序得到 “aet”。在哈希表中找到键为 “aet” 的项发现已存在则将原始字符串 “tea” 加入到值的向量中以此类推到最后遍历哈希表 hash 中的每一对键值对然后将他们全部输出就行
class Solution {
public:vectorvectorstring groupAnagrams(vectorstring strs) {unordered_mapstring,vectorstringhash;for(auto str:strs){string datastr;sort(str.begin(),str.end()); //排序hash[str].push_back(data); //存入哈希}vectorvectorstringres;for(auto s:hash){ //第二次遍历res.push_back(s.second); }return res;}
};在主函数内使用
int main() {vectorstring strs { eat, tea, tan, ate, nat, bat };vectorvectorstring result groupAnagrams(strs);for (vectorstringgroup : result) {for (string str : group) {cout str ;}cout endl;}return 0;
}