算法-字母异位词分组

算法:字母异位词分组

题录链接: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;
    }

}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值