当前位置: 首页 > news >正文

剑指 Offer II 033. 变位词组

题目链接

剑指 Offer II 033. 变位词组 mid

题目描述

给定一个字符串数组 strs,将 变位词 组合在一起。 可以按任意顺序返回结果列表。

注意:若两个字符串中每个字符出现的次数都相同,则称它们互为变位词。

示例 1:

输入: strs = [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”]
输出: [[“bat”],[“nat”,“tan”],[“ate”,“eat”,“tea”]]

示例 2:

输入: strs = [“”]
输出: [[“”]]

示例 3:

输入: strs = [“a”]
输出: [[“a”]]

提示:

  • 1<=strs.length<=1041 <= strs.length <= 10^41<=strs.length<=104
  • 0<=strs[i].length<=1000 <= strs[i].length <= 1000<=strs[i].length<=100
  • strs[i]仅包含小写字母

解法:哈希表 + 排序

变位词 排序之后,所有的变位词都相同了。

我们可以将排序后的 变位词 当作哈希表的 key,原字符串当作 val,插入到每一个 key对应的列表中。

最后遍历一遍,将哈希表中的列表取出来加到答案列表中即可。

时间复杂度: O(n∗m∗logm)O(n * m * logm)O(nmlogm)

C++代码:

class Solution {
public:vector<vector<string>> groupAnagrams(vector<string>& strs) {unordered_map<string,vector<string>> m;for(auto &s:strs){string ss = s;sort(s.begin(),s.end());m[s].push_back(ss);}vector<vector<string>> ans(m.size());int idx = 0;for(auto [_,v]:m){ans[idx++] = v;}return ans;}
};

Python代码:

class Solution:def groupAnagrams(self, strs: List[str]) -> List[List[str]]:m = collections.defaultdict(list)for s in strs:key = "".join(sorted(s))m[key].append(s)return list(m.values())
http://www.lryc.cn/news/40770.html

相关文章:

  • spring-cloud-sentinel ---流控算法---review
  • 1.浅析NIO 多路复用器selector
  • Day920.结构化日志业务审计日志 -SpringBoot与K8s云原生微服务实践
  • 前端代码复用学习笔记:整洁架构与清晰架构
  • 【python刷题】leecode官方提示“->“,“:“这些符号是什么意思?什么是Type Hints?
  • 【华为OD机试真题2023 JAVA】最佳对手
  • css实现文字大小自适应
  • 【Redis】搭建哨兵集群
  • CTFHub | .htaccess
  • 微机原理 || 8253 芯片 (详细讲解 + 经典例题)
  • python Django高级操作-分页-定义CVS-发送邮件
  • React 用一个简单案例体验一遍 React-dom React-router React-redux 全家桶
  • 9. C#面向对象基础
  • 【MIT 6.S081】Lab2: system calls
  • 设计模式之单例模式~
  • top终端详解
  • 解决一个偶现的503 bug,花了俺不少时间
  • 什么是栈,如何实现?
  • 在我的MacBook上捣鼓ESP8266
  • 【深度强化学习】(8) iPPO 模型解析,附Pytorch完整代码
  • 77.qt qml-QianWindow-V1版本界面讲解
  • RHCE学习日记二
  • Dubbo原理简介
  • JavaSE基础总结
  • 5G(NR)信道带宽和发射带宽---频率资源
  • 基于Spring Boot的酒店管理系统
  • Ae:混合模式
  • JS中的变量
  • Hadoop运行模块
  • Web自动化——前端基础知识(二)