zoukankan      html  css  js  c++  java
  • LeetCode:字母异位词分组【16】

    LeetCode:字母异位词分组【16】

    题目描述

    给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。

    示例:

    输入: ["eat", "tea", "tan", "ate", "nat", "bat"],
    输出:
    [
      ["ate","eat","tea"],
      ["nat","tan"],
      ["bat"]
    ]

    说明:

    • 所有输入均为小写字母。
    • 不考虑答案输出的顺序。

    题目分析

      既然是分组问题,那么每个组都需要一个标识,还有一组值,最方便的方式是建立HashMap<Key,List>

      我们怎么筛选元素呢?肯定要一个一个看,将每个元素放到对应的组中,如果组不存在,那他则为该组的第一个元素

      放到对应组中是该题的关键所在,题目中说明了字母相同,但排列不同,那我们将排列变为一致,则单纯匹配字母就可以了。

    Java题解

    class Solution {
        public List<List<String>> groupAnagrams(String[] strs) {
            if(strs.length==0)
                return new ArrayList<>();
            HashMap<String,List<String>> maps = new HashMap<>();
            for(String s:strs)
            {
                char[] c = s.toCharArray();
                Arrays.sort(c);
                String key = String.valueOf(c);
                if(!maps.containsKey(key))
                    maps.put(key,new ArrayList());
                maps.get(key).add(s);
            }
            return new ArrayList(maps.values());
        }
    }
    
  • 相关阅读:
    mysql内置函数
    phpmyadmin 安装
    java 命令行JDBC连接Mysql
    数据库工具
    java JDBC
    mysql 各种关系代数的使用
    恢复误删的DB table数据
    eclipse php pdt插件安装
    mysql通配符使用
    关系代数和sql语句对应关系
  • 原文地址:https://www.cnblogs.com/MrSaver/p/9553682.html
Copyright © 2011-2022 走看看