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

leetcode 49 最优解排序 哈希+字典+质数

解法一:
容易想到用Counter计数然后作为key放进字典,但字典不能被hash,所以只能用桶再转tuple,代码如下:

classSolution:defgroupAnagrams(self,strs:List[str])->List[List[str]]:d={}forsinstrs:bm=[0for_inrange(26)]forcins:bm[ord(c)-ord('a')]+=1bm=tuple(bm)ifbmind:d[bm].append(s)else:d[bm]=[s]ret=[]forkeyind:ret.append(d[key])returnret

优化一:defaultdict
做题做多了也会发现很烦的东西,比如字典每次都要看在不在里面,defaultdct会返回默认值,如果不在的话,不用再加if了,很舒服,代码如下:

fromcollectionsimportdefaultdictclassSolution:defgroupAnagrams(self,strs:List[str])->List[List[str]]:d=defaultdict(list)forsinstrs:bm=[0for_inrange(26)]forcins:bm[ord(c)-ord('a')]+=1bm=tuple(bm)d[bm].append(s)ret=[]forkeyind:ret.append(d[key])returnret

解法二:质数
由于质因数分解很慢,而且质数的乘积唯一,所以可以用质数的乘积做hashing。

fromcollectionsimportdefaultdictclassSolution:defgroupAnagrams(self,strs:List[str])->List[List[str]]:primes=[2,3,5,7,11,13,17,19,23,29,31,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103]d=defaultdict(list)forsinstrs:key=1forcins:key*=primes[ord(c)-ord('a')]d[key].append(s)ret=[]forkeyind:ret.append(d[key])returnret

面试最优解:其实字符串直接用作哈希,是很不错的解法,别人帮你做。所以咱们排序下字符串做key就行,也不用占用额外空间。

typedefvector<string>V;classSolution{public:vector<vector<string>>groupAnagrams(vector<string>&strs){vector<V>ans;map<string,int>m;// hash 2 intfor(autos:strs){string s2=s;sort(s2.begin(),s2.end());if(m.count(s2)){intidx=m[s2];ans[idx].push_back(s);}else{ans.push_back(V{s});m[s2]=ans.size()-1;}}returnans;}};
http://www.jsqmd.com/news/610971/

相关文章:

  • SPSS实战:多组比较的Tukey事后检验与置信区间可视化
  • 在超大数据集下 DuckDB 与 MySQL 查询速度对比召
  • 【C#高性能编程核心】:Span<T>在零分配字符串处理中的5个颠覆性实战案例
  • 09 华夏之光永存:带领华为盘古大模型走向世界巅峰
  • MYSQL8.0 --- liunx系统安装
  • **MQTT协议实战:用Python实现轻量级物联网消息推送系统**在当今万物互联的时代
  • UDP 不是更快的 TCP:理解时效性、语义和工程边界
  • 2026年塑料护肤品分装盒/膏霜分装盒厂家哪家好 - 行业平台推荐
  • 告别黑飞:基于ADS-B的无人机合规飞行方案深度解析(适配主流飞控)
  • 2026 年深度测评:立体库品牌哪家权威?
  • OpenClaw跨平台发布:Qwen3-14B镜像同步知乎/公众号内容
  • Linux内核定时器相关内容总结
  • 终极指南:Alacritty极速终端如何完美处理特殊字符与快捷键?
  • 探寻2026年优质变压器:干式变压器厂商推荐指南,变压器/预装式变电站/干式变压器/油浸式变压器,变压器研发企业推荐 - 品牌推荐师
  • 单片机基于TXW8301的Wi-Fi Halow物联网控制
  • OpenClaw环境隔离:用Docker部署Qwen3-4B避免污染主机
  • RF-Diffusion 时频扩散无线电信号生成实验复现
  • 【Android】基于安卓app的健身房会员管理系统(源码+部署方式+论文)[独一无二]
  • 2026年粉体工程混合机技术拐点:智能化升级与全生命周期成本洞察白皮书
  • Arduino IDE内置的ArduinoISP代码详解:从引脚定义到通信协议,搞懂Bootloader烧录原理
  • Linux操作系统--8--操作系统中锁的实现
  • OpenClaw能耗优化:Phi-3-mini-128k-instruct在笔记本上的省电配置
  • 10名学生成绩排名系统详解
  • 轻量级安全助手:在2GB内存设备运行OpenClaw+SecGPT-14B
  • 2026年4月市场上新型的球阀供货厂家有哪些,市面上球阀深度剖析助力明智之选 - 品牌推荐师
  • Redis持久化:从AOF到RDB,如何实现数据不丢失?揽
  • OpenClaw多模型支持:千问3.5-9B与本地模型混用方案
  • Jenkins部署java项目 :构建触发器定时更新
  • OpenClaw多任务并行:Qwen3-14b_int4_awq模型高效调度
  • 终极Flash浏览器指南:如何在现代系统中完美运行Flash游戏与网页