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

leetcode49字母异位词分组

思路一

知道要用hash,但是当时不知道怎么解决字符串的全排列。一个单词可以变成好多单词,我怎么对这些单词枚举呢。结果发现可以sort,那么字母一样的单词一定一样,然后将单词放到hashmap里面,凡是排完序一样的单词都放到一个队列里去。

代码一

class Solution {public List<List<String>> groupAnagrams(String[] strs) {Map<String, List<String>> map = new HashMap<>();for (String str:strs){String s1 = sortString(str);if (map.containsKey(s1)){map.get(s1).add(str);}else {List<String> list = new ArrayList<>();list.add(str);map.put(s1, list);}}List<List<String>> result = new ArrayList<>();for (Map.Entry<String, List<String>> entry : map.entrySet()){result.add(entry.getValue());}return result;}private String sortString(String str) {char[] chars = str.toCharArray();Arrays.sort(chars);return String.valueOf(chars);}}

思路二

class Solution {public List<List<String>> groupAnagrams(String[] strs) {Map<String, List<String>> map = new HashMap<>();for (String str:strs){String s1 = stringToKey(str);if (map.containsKey(s1)){map.get(s1).add(str);}else {List<String> list = new ArrayList<>();list.add(str);map.put(s1, list);}}List<List<String>> result = new ArrayList<>();for (Map.Entry<String, List<String>> entry : map.entrySet()){result.add(entry.getValue());}return result;}private String stringToKey(String str) {char[] chars = str.toCharArray();int[] z = new int[26];for (char ch : chars){z[ch-97] ++;}StringBuilder stringBuilder = new StringBuilder();for (int i = 0; i < 26; i++) {if (z[i] != 0){stringBuilder.append((char)(i+97));stringBuilder.append(z[i]);}}return stringBuilder.toString();}}

就是构建key
stringToKey就是想法构建一个key,如何把 abc acb cba 映射为相同的key,就是字母和出现的次数

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 一.Oracle每日运维操作
  • 清理C盘缓存,电脑缓存清理怎么一键删除,操作简单的教程
  • Html在线编辑器
  • Markdown formula 公式
  • 【C#生态园】完整解读C#音频处理库:功能、安装配置和使用场景一网打尽
  • 2024短剧系统开发,付费短剧小程序app源码教程,分销功能讲解搭建上线
  • Java项目实战II基于Java+Spring Boot+MySQL的作业管理系统设计与实现(源码+数据库+文档)
  • 配电房监控 配电柜监测系统方案简介@卓振思众
  • unity的学习
  • MyBatis 如何将 Mapper 接口与其 XML 映射文件关联:深入原理与实现
  • 电脑浏览器访问华为路由器报错,无法访问路由器web界面:ERR_SSL_VERSION_OR_CIPHER_MISMATCH 最简单的解决办法!
  • AJAX(一)HTTP协议(请求响应报文),AJAX发送请求,请求问题处理
  • LabVIEW提高开发效率技巧----VI服务器和动态调用
  • 怎么检查cuda是否安装成功(以及查看cuda的安装位置)
  • 氢能源多旋翼无人机技术详解
  • ES6指北【2】—— 箭头函数
  • “Material Design”设计规范在 ComponentOne For WinForm 的全新尝试!
  • 【Redis学习笔记】2018-06-28 redis命令源码学习1
  • Akka系列(七):Actor持久化之Akka persistence
  • Android路由框架AnnoRouter:使用Java接口来定义路由跳转
  • Android组件 - 收藏集 - 掘金
  • Angular Elements 及其运作原理
  • AngularJS指令开发(1)——参数详解
  • DataBase in Android
  • Docker容器管理
  • ES6系统学习----从Apollo Client看解构赋值
  • js学习笔记
  • Laravel深入学习6 - 应用体系结构:解耦事件处理器
  • Next.js之基础概念(二)
  • Promise面试题,控制异步流程
  • Ruby 2.x 源代码分析:扩展 概述
  • SpiderData 2019年2月16日 DApp数据排行榜
  • 得到一个数组中任意X个元素的所有组合 即C(n,m)
  • 机器学习学习笔记一
  • 听说你叫Java(二)–Servlet请求
  • 学习Vue.js的五个小例子
  • 用element的upload组件实现多图片上传和压缩
  • 怎样选择前端框架
  • Python 之网络式编程
  • 大数据全解:定义、价值及挑战
  • 新年再起“裁员潮”,“钢铁侠”马斯克要一举裁掉SpaceX 600余名员工 ...
  • ​一帧图像的Android之旅 :应用的首个绘制请求
  • $$$$GB2312-80区位编码表$$$$
  • ( )的作用是将计算机中的信息传送给用户,计算机应用基础 吉大15春学期《计算机应用基础》在线作业二及答案...
  • (4)STL算法之比较
  • (6)STL算法之转换
  • (PWM呼吸灯)合泰开发板HT66F2390-----点灯大师
  • (ZT)薛涌:谈贫说富
  • (附源码)spring boot基于Java的电影院售票与管理系统毕业设计 011449
  • (附源码)springboot青少年公共卫生教育平台 毕业设计 643214
  • (附源码)ssm基于jsp的在线点餐系统 毕业设计 111016
  • (六)软件测试分工
  • (免费分享)基于springboot,vue疗养中心管理系统
  • (七)MySQL是如何将LRU链表的使用性能优化到极致的?
  • (十三)Java springcloud B2B2C o2o多用户商城 springcloud架构 - SSO单点登录之OAuth2.0 根据token获取用户信息(4)...