博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
49. Group Anagrams (String, Map)
阅读量:4073 次
发布时间:2019-05-25

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

Given an array of strings, group anagrams together.

Example:

Input: ["eat", "tea", "tan", "ate", "nat", "bat"],Output:[  ["ate","eat","tea"],  ["nat","tan"],  ["bat"]]

Note:

 

分析:

 第一反应是每次从数组中取出新的字符串然后遍历已有的list,对比是否Anagram,如果是就add,否则新建list.然后就需要一个函数判断是否anagram,就看是否第二个字符串中的所有元素都可以在第一个字符串中找得到且两个字符串长度相同。这种方法的问题就是字符串中相同字母可能出现不止一次:"fed","fee“。f,e在fed中都有,但是fee中没有d。

看了讨论区在高票的答案:其实用hashmap保存按照字母序的字符串映射的anagram列表就可以了,然后直接对比字符串按照字母序排序的结果和这个字母序字符串。

注意:

1. 转成字母序字符串的方法

2. hashmap的contains Key()方法; values()方法返回值是Collections<T>,需要强转。

  • All inputs will be in lowercase.
  • The order of your output does not matter.
public List
> groupAnagrams(String[] strs) { List
> res = new ArrayList<>(); if(strs==null ||strs.length==0) return res; HashMap
> map = new HashMap
>(); for(String s:strs){ char[] arr = s.toCharArray(); Arrays.sort(arr); String str = String.valueOf(arr); if(!map.containsKey(str)){ List
tmp = new ArrayList
(); tmp.add(s); map.put(str,tmp); } else map.get(str).add(s); } res = new ArrayList<>(map.values());//collections转成List return res; }

 

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

你可能感兴趣的文章
pycharm设置code templates
查看>>
【深度学习】【机器学习】分类结果分析指标和方法(混淆矩阵、TP、TN、FP、FN、精确率、召回率)(附源码)
查看>>
【深度学习】【数据增强】【目标检测】带或不带标注框的图片离线增强的实现(贴背景、随机旋转、随机色调变换、随机透视变换)(附源码)
查看>>
Oracle数据库迁移到PostgreSQL的问题总结
查看>>
redis的常用命令
查看>>
RabbitMQ消息队列改造踩过的坑
查看>>
java调用dll文件的几种常见方式
查看>>
2、对象的使用方法, 多个对象的生成及使用, 匿名对象, 空对象
查看>>
4、static关键字作用
查看>>
7、对象的转型
查看>>
9、包和访问权限
查看>>
11、java当中的IO
查看>>
12、spinner的使用以及ArrayAdapter的使用
查看>>
LinearLayout/RelativeLayout/FrameLayout实例,以及Activity跳转
查看>>
Java - 构造函数、this 和 super的使用
查看>>
一个对象怎么调用另一个对象, 打jar包,到底调用哪一个方法, 匿名对象, 空对象
查看>>
集合 TreeSet HashMap
查看>>
Android 编码规范及代码风格
查看>>
Java基础知识梳理
查看>>
ADT Bundle 理解开发环境 & Eclipse工具使用技巧
查看>>