C++实现LeetCode(49.群组错位词)
[LeetCode] 49. Group Anagrams 群组错位词
Given an array of strings, group anagrams together.
Example:
Input: ["eat", "tea", "tan", "ate", "nat", "bat"],Note:
Output:
[
["ate","eat","tea"],
["nat","tan"],
["bat"]
]
- All inputs will be in lowercase.
- The order of your output does not matter.
解法一:
class Solution {public:vectorgroupAnagrams(vector& strs) {vector res; unordered_map m; for (string str : strs) {string t = str; sort(t.begin(), t.end()); if (!m.count(t)) {m[t] = res.size(); res.push_back({}); }res[m[t]].push_back(str); }return res; }};
下面这种解法没有用到排序,用一个大小为 26 的 int 数组来统计每个单词中字符出现的次数,然后将 int 数组转为一个唯一的字符串,跟字符串数组进行映射,这样就不用给字符串排序了,参见代码如下:
解法二:
class Solution {public:vectorgroupAnagrams(vector& strs) {vector res; unordered_map> m; for (string str : strs) {vector cnt(26); string t; for (char c : str) ++cnt[c - 'a']; for (int i = 0; i < 26; ++i) {if (cnt[i] == 0) continue; t += string(1, i + 'a') + to_string(cnt[i]); }m[t].push_back(str); }for (auto a : m) {res.push_back(a.second); }return res; }};
【C++实现LeetCode(49.群组错位词)】到此这篇关于C++实现LeetCode(49.群组错位词)的文章就介绍到这了,更多相关C++实现群组错位词内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
推荐阅读
- 关于QueryWrapper|关于QueryWrapper,实现MybatisPlus多表关联查询方式
- MybatisPlus使用queryWrapper如何实现复杂查询
- python学习之|python学习之 实现QQ自动发送消息
- 孩子不是实现父母欲望的工具——林哈夫
- opencv|opencv C++模板匹配的简单实现
- Node.js中readline模块实现终端输入
- 【Leetcode/Python】001-Two|【Leetcode/Python】001-Two Sum
- java中如何实现重建二叉树
- leetcode|leetcode 92. 反转链表 II
- 人脸识别|【人脸识别系列】| 实现自动化妆