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

49.字母异位词分组

题目描述

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

字母异位词 是由重新排列源单词的所有字母得到的一个新单词。

示例 1:

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

示例 2:

输入: strs = [""]
输出: [[""]]

示例 3:

输入: strs = ["a"]
输出: [["a"]]

提示:

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

题解

由于这道题涉及到分类问题,我们考虑使用哈希表来解决

import java.util.Arrays;
class Solution {
    public List<List<String>> groupAnagrams(String[] strs) {
      HashMap<String,List<String>> map=new HashMap<>();
      for(String str:strs){
       char[] strv=str.toCharArray();//将字符串转化为数组
       Arrays.sort(strv);//将数组排序,只要有相同字母,排序后肯定一样
       String strNew=String.valueOf(strv);//转化为字符串
       if(map.containsKey(strNew)){//如果哈希表中已经存储了这个字符串,就将其插入到对应列表中
         map.get(strNew).add(str);
       }
       else{//如果哈希表中没有存储这个字符串,我们将创建列表,将其插入
           List<String> list=new ArrayList<>();
           list.add(str);
           //插入到map中
           map.put(strNew,list);
       }
      }
      //将map中所有元素用列表返回
      List<List<String>> list=new ArrayList<>(map.values());
      return list;
    }
}

 


http://www.kler.cn/news/341662.html

相关文章:

  • uniapp view怎么按长度排列一行最多四个元素,并且换行后,每一行之间都有间隔
  • 基于SpringBoot+Vue+uniapp的高校教务管理小程序系统设计和实现
  • 鸿蒙harmonyos next flutter混合开发之开发FFI plugin
  • 量化交易与基础投资工具介绍
  • TIM的PWM模式
  • Java使用注解进行参数校验
  • 【每天学点AI】大模型如何做情感分类?BERT是如何做情感分类的?
  • 等保测评是什么?为什么要做等保测评?
  • 技术分享 —— JMeter接口与性能测试实战!
  • 探索一机两用号召是否和源代码保密冲突
  • 智能听诊器:宠物健康教育的创新工具
  • 国产工具链GCKontrol-GCAir助力控制律开发快速验证
  • rust使用tokio
  • SPIE出版-EI会议-人机交互 虚拟现实 <<< 11月杭州
  • linux 重置root密码
  • 如何一键将数据库表导出为Excel,并且列名为中文注释
  • 【笔记】6.2 玻璃的成型
  • 文献阅读Prov-GigaPath模型--相关知识点罗列
  • 【React】setState 的同步异步问题
  • 汽车软件设计时容易忽略的点 -- 观ETAS Webinar有感