博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JAVA代码—算法基础:字谜分组
阅读量:4041 次
发布时间:2019-05-24

本文共 1310 字,大约阅读时间需要 4 分钟。

字谜分组

问题描述:给定一个字符串数组,请将数组中的元素进行分组。例如,给定字符串数组为: [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”],则返回结果为:

[
[“ate”, “eat”,”tea”],
[“nat”,”tan”],
[“bat”]
]
注意:所有的字符串均为小写字母。

分析:通过观察给定的字符串数组,分析其每一个元素,和分析返回结果,可以发现能够归为一组的字符串都有一个共同的特点:一组中包含相同的字符,并且一组中与字符的顺序无关。

算法设计:

package com.bean.algorithmbasic;import java.util.ArrayList;import java.util.Arrays;import java.util.Collections;import java.util.HashMap;import java.util.List;public class GroupAnagramsDemo {
/* * 对给定的字符串数组中的元素进行分组归纳 * */ public static List
> groupAnagrams(String[] strs) { if(strs==null || strs.length == 0){ return new ArrayList
>(); } HashMap
> map = new HashMap
>(); //Arrays.sort(strs); for (String s:strs) { char[] ca = s.toCharArray(); Arrays.sort(ca); String keyStr = String.valueOf(ca); if(!map.containsKey(keyStr)) map.put(keyStr, new ArrayList
()); map.get(keyStr).add(s); } for(String key: map.keySet()) { Collections.sort(map.get(key)); } return new ArrayList
>(map.values()); } public static void main(String[] args) { // TODO Auto-generated method stub String[] strArray= { "ate", "eat","tea","nat","tan","bat"}; List
> resultList=groupAnagrams(strArray); for(List
ls:resultList) { System.out.println(ls); } }}

.(完)

转载地址:http://ngvdi.baihongyu.com/

你可能感兴趣的文章
gstreamer相关工具集合
查看>>
arm 自动升级脚本
查看>>
RS232 四入四出模块控制代码
查看>>
gstreamer插件之 videotestsrc
查看>>
autoupdate script
查看>>
linux 驱动开发 头文件
查看>>
/etc/resolv.conf
查看>>
container_of()传入结构体中的成员,返回该结构体的首地址
查看>>
linux sfdisk partition
查看>>
ipconfig,ifconfig,iwconfig
查看>>
opensuse12.2 PL2303 minicom
查看>>
网络视频服务器移植
查看>>
Encoding Schemes
查看>>
移植QT
查看>>
如此调用
查看>>
计算机的发展史
查看>>
带WiringPi库的交叉编译如何处理一
查看>>
带WiringPi库的交叉笔译如何处理二之软链接概念
查看>>
Spring事务的七种传播行为
查看>>
ES写入找不到主节点问题排查
查看>>