代码

package com.xcrj;import java.util.*;/*** 剑指 Offer II 033. 变位词组* 给定一个字符串数组 strs ,将 变位词 组合在一起。 可以按任意顺序返回结果列表。* 注意:若两个字符串中每个字符出现的次数都相同,则称它们互为变位词。* !!! 使用map统计时确保key的唯一性*/
public class Solution33 {/*** map<String,List<String>>, key为排序后的变位词*/public List<List<String>> groupAnagrams1(String[] strs) {// 统计Map<String, List<String>> map = new HashMap<>();for (String str : strs) {// 获取排序后的字符串char[] chars = str.toCharArray();Arrays.sort(chars);String strSort = new String(chars);// map中原来存储有list<变位词>List<String> list = map.getOrDefault(strSort, new ArrayList<>());// 加入新的变位刺list.add(str);// 更新listmap.put(strSort, list);}// !!! ArrayList(多个list)构造函数return new ArrayList<List<String>>(map.values());}/***  map<String,List<String>>, key为 字母+字母出现次数拼接成的字符串**/public List<List<String>> groupAnagrams2(String[] strs) {// 统计Map<String, List<String>> map = new HashMap<>();for(String str:strs){char[] chars=str.toCharArray();// 统计每个字母出现的次数int[] cnts=new int[26];for(char c:chars){cnts[c-'a']++;}// 构造map的keyStringBuilder sb=new StringBuilder();for(int i=0;i<26;i++){if(cnts[i]!=0){sb.append('a'+i).append(cnts[i]);}}// map中原来存储有list, map中有没有value,更新valueList<String> list = map.getOrDefault(sb.toString(),new ArrayList<>());list.add(str);map.put(sb.toString(),list);}return new ArrayList<>(map.values());}
}

参考

作者:LeetCode-Solution
链接:https://leetcode.cn/problems/sfvd7V/solution/bian-wei-ci-zu-by-leetcode-solution-5wnz/
来源:力扣(LeetCode)

leetcode/变位词组,变位词放一起相关推荐

  1. LeetCode 面试题 10.02. 变位词组

    面试题 10.02. 变位词组 Ideas 互为变位词的两个字符串包含的字符相同,因此对两个字符串分别进行排序之后得到的字符串一定是相同的,可以将排序之后的字符串作为哈希表的键. 在Python里面有 ...

  2. leetcode面试题 10.02. 变位词组

    编写一种方法,对字符串数组进行排序,将所有变位词组合在一起.变位词是指字母相同,但排列不同的字符串. 注意:本题相对原题稍作修改 示例: 输入: ["eat", "tea ...

  3. Leetcode 变位词组

    编写一种方法,对字符串数组进行排序,将所有变位词组合在一起.变位词是指字母相同,但排列不同的字符串. 注意:本题相对原题稍作修改 示例: 输入: ["eat", "tea ...

  4. 程序员面试金典 - 面试题 10.02. 变位词组(哈希map)

    1. 题目 编写一种方法,对字符串数组进行排序,将所有变位词组合在一起. 变位词是指字母相同,但排列不同的字符串. 示例: 输入: ["eat", "tea", ...

  5. 面试题 10.02. 变位词组

    编写一种方法,对字符串数组进行排序,将所有变位词组合在一起.变位词是指字母相同,但排列不同的字符串. 注意:本题相对原题稍作修改 示例: 输入: ["eat", "tea ...

  6. leetCode最短补全词

    leetCode最短补全词 题目要求如下: 给你一个字符串 licensePlate 和一个字符串数组 words ,请你找出并返回 words 中的 最短补全词 . 补全词 是一个包含 licens ...

  7. leetcode之字母异位词分组

    题目描述: 给你一个字符串数组,请你将 字母异位词 组合在一起.可以按任意顺序返回结果列表. 字母异位词 是由重新排列源单词的字母得到的一个新单词,所有源单词中的字母通常恰好只用一次. 示例 1: 输 ...

  8. 英语四级词汇:四级词组百词大关

    英语四级词汇:四级词组"百词大关" 1. at the thought of 一想到- 2. as a whole (=in general) 就整体而论 3. at will 随 ...

  9. Leetcode 691. 贴纸拼词 C++

    Leetcode 691. 贴纸拼词 题目 我们给出了 N 种不同类型的贴纸.每个贴纸上都有一个小写的英文单词. 你希望从自己的贴纸集合中裁剪单个字母并重新排列它们,从而拼写出给定的目标字符串 tar ...

最新文章

  1. python梦幻西游4小人_梦幻西游大漠插件过鼠标漂移和四小人
  2. JAVA移慎_谨慎使用Java8的默认方法
  3. IOS-百度地图API用点生成线路、导航、自定义标注 2013年11月更新
  4. 将内存单元中小写字符改成大写字符
  5. HDU - 4461 The Power of Xiangqi
  6. [转]【Android】9-patch图片以及例子说明
  7. 不朽传奇-云计算技术背后的那些天才程序员:Qemu的作者法布里斯贝拉
  8. 交换字典的key和value
  9. Maven-dependencyManagement与import
  10. 通用版程序在the new iPad与Xcode4.3中的不兼容。
  11. 2020-08-03 手动编译Qt库(msvc2019版本)
  12. ospf 默认路由综合配置
  13. java.net.bindexception: address already in use: jvm_bind:8080
  14. (2)评价算法-TOPSIS算法
  15. Windows Azure Virtual Machine (33) Azure虚拟机删除重建
  16. JMF实现对USB视频数据捕捉和应用
  17. quartus联合仿真步骤
  18. HBase入门: 简介、特点、优缺点、数据结构、系统架构、入门操作、适用场景、注意事项与遇到的坑
  19. android源码编译1
  20. 人工智能3d建模算法_AI人工智能是否可以替代UI和后期3D建模?

热门文章

  1. 时空预测4-graph wavenet
  2. html5自动换图,html5教你做炫酷的碎片式图片切换 (canvas)
  3. 【IT运维】传统运维与云运维到底有什么不同呢?
  4. from pytorch3d import _C报错
  5. c语言里有队列函数没,C语言队列的实现 - osc_tf30cc36的个人空间 - OSCHINA - 中文开源技术交流社区...
  6. HTTP 请求头与响应头详解
  7. Java中集合的基本使用
  8. PDF转Excel怎么转?这些方法值得收藏
  9. java基础热门侠客养成_侠客养成手册点苍任务怎么做 点苍派任务详细攻略
  10. Java开发者动手学习深度学习开篇