zoukankan      html  css  js  c++  java
  • 49. Group Anagrams

    49. Group Anagrams

    Given an array of strings, group anagrams together.

    Example:

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

    Note:

    • All inputs will be in lowercase.
    • The order of your output does not matter.

       
      看到题目第一反应,就是用key,value构造的Map进行分类。类似“eat”,"ate"的字符串既然能被分到一类,必然拥有相同的key,于是答案框架很快就写出来了。
        public static List<List<String>> groupAnagrams(String[] strs) {
            List<List<String>> result = new ArrayList<>();
            Map<String, List<String>> resMap = new HashMap<String, List<String>>();
    
            for (int i = 0; i < strs.length; i++) {
                String sortString = sortString(strs[i]);
                if (resMap.containsKey(sortString)) {
                    resMap.get(sortString).add(strs[i]);
                } else {
                    List<String> temp = new ArrayList<>();
                    temp.add(strs[i]);
                    resMap.put(sortString, temp);
                }
            }
            for (String list : resMap.keySet()) {
                result.add(resMap.get(list));
            }
            return result;
        }

      这里唯一的问题就是sortString()怎么实现,当然这是贴的AC后的代码才叫这个名字,这里的重点就是如何给属于同一类的字符串返回统一的key。当然首先想到的就是字母排序,但是又觉得排序是相当花时间的算法,有想过用char类型的ascii码值相加当key,即int sum = ‘a' + 't' + 'e',但是sum相等,包含的字母也不一定一样,想了一会也没找到合适的办法,就先用排序实现了,后面有更好的解决办法再添加。

      具体sortString()实现如下:

        public static String sortString(String src) {
            char[] arr = src.toCharArray();
            Arrays.sort(arr);
            return new String(arr);
        }

      测试方法

    public static void main(String[] args) {
            String[] strs = { "eat", "eat", "tan", "ate", "nat", "bat" };
            System.out.println(groupAnagrams(strs).toString());
        }
      
     
     
  • 相关阅读:
    配置Xmanager远程登录
    如何为ubuntu等Linux系统扩容(LVM)
    CentOS7配置iptables防火墙
    Cetnos搭建vsftp服务器
    vim设置
    zabbix 问题汇总
    转:常用验证正则表达式
    C#对象序列化成XML,以及自定义标签名
    改变FileUpload文件上传控件的显示方式,确认后上传
    改变FileUpload文件上传控件的显示方式,选择文件后自动上传
  • 原文地址:https://www.cnblogs.com/lyInfo/p/9070019.html
Copyright © 2011-2022 走看看