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

算法-字母异位词分组

题录链接:49. 字母异位词分组 - 力扣(LeetCode)

描述:

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

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

示例 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.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class Solution {
    //转换成数组排序
    public  String seqStr(String s)
    {
        //转换成字符串
        char[] sArr= s.toCharArray();
        //排序
        for(int i=0;i<sArr.length-1;i++)
        {
            for(int j=0;j<sArr.length-1-i;j++)
            {
                if(sArr[j]>sArr[j+1])
                {
                    char tem=sArr[j];
                    sArr[j]=sArr[j+1];
                    sArr[j+1]=tem;
                }
            }
        }
        return new String(sArr);
    }

    public List<List<String>> groupAnagrams(String[] strs) {
        Map<String,List<String>> kMap=new HashMap<>();
        for(int i=0;i<strs.length;i++)
        {
            String s1=seqStr(strs[i]);
            if(kMap.containsKey(s1))
            {
                //存在就添加到列表里
                List<String> s1Arr=kMap.get(s1);
                s1Arr.add(strs[i]);
                kMap.put(s1,s1Arr);
            }else
            {
                //不存在就添加
                List<String> s2=new ArrayList<>();
                s2.add(strs[i]);
                kMap.put(s1,s2);
            }
        }
        //添加结果
        List<List<String>> w=new ArrayList<>();
        for(Map.Entry<String,List<String>> listEntry:kMap.entrySet())
        {
            w.add(listEntry.getValue());
        }
        System.out.println(w);
        //返回处理结果
        return w;
    }

}

http://www.kler.cn/a/584508.html

相关文章:

  • Android 中临时文件存放路径选择
  • MOEFeedForward 模块
  • DeepSeek模型本地化部署方案及Python实现
  • ArcGIS Pro 车牌分区数据处理与地图制作全攻略
  • CMOS电平标准详解
  • JAVA面试_进阶部分_Ibatis与Hibernate的区别
  • STM32第一天建立工程
  • 医疗APP开发如何实现跨机构数据互通
  • Html5记忆翻牌游戏开发经验分享
  • c++介绍函数指针 十
  • 智享三代实景无人直播:实景呈现+智能互动,以科技之力稳抓流量与商机
  • Oracle中In和Exists区别分析
  • 56.HarmonyOS NEXT 登录模块开发教程(十):总结与展望
  • Redis中常见的问题
  • Chrome 扩展开发API实战:Runtime(八)
  • 自然语言处理:文本聚类
  • 【笔记一下】RAG 专题基础学习
  • TightVNC服务端安装与配置:Windows远程桌面的内网穿透解决方案
  • 【亲测有用】数据集成平台能力演示(支持国产数据库DaMeng与KingBase)
  • OpenAI智能体初探:使用 OpenAI Responses API 在 PDF 中实现检索增强生成(RAG)