zoukankan      html  css  js  c++  java
  • leetcode-49

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

    示例:

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

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

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/group-anagrams
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    两个方式,基本思路都是对复合一个list的对象转换成相同key的思路

    package Leetcode;
    
    import java.util.*;
    
    public class Solution48 {
        public List<List<String>> groupAnagrams(String[] strs) {
            if (strs.length == 0) {
                return new ArrayList<>();
            }
            Map<String, List> ans = new HashMap<>();
            for (String s : strs) {
                char[] ca = s.toCharArray();
                Arrays.sort(ca);
                String key = ca.toString();
                if (!ans.containsKey(key)) {
                    ans.put(key, new ArrayList());
                } else {
                    ans.get(key).add(s);
                }
            }
            return new ArrayList<>(ans.values());
        }
    
        public List<List<String>> groupAnagrams2(String[] strs) {
            if (strs.length == 0) {
                return new ArrayList<>();
            }
            Map<String, List> ans = new HashMap<>();
            int[] count = new int[26];
            for (String s : strs) {
                Arrays.fill(count, 0);
                for (char c : s.toCharArray()) {
                    count[c - 'a']++;
                }
                StringBuilder sb = new StringBuilder("");
                for (int i = 0; i < 26; i++) {
                    sb.append("#");
                    sb.append(count[i]);
                }
                String key = sb.toString();
                if (!ans.containsKey(key)) {
                    ans.put(key, new ArrayList());
                } else {
                    ans.get(key).add(s);
                }
            }
            return new ArrayList<>(ans.values());
        }
    }

    end

    一个没有高级趣味的人。 email:hushui502@gmail.com
  • 相关阅读:
    给X轴添加滚动条,放大X轴Y轴
    win7下发布网站
    asp.net播放声音
    用Flash方式动态生成图表
    debian programming guid
    php 自动跳转的3种方法
    用expect实现su c功能,身份切换
    11 Top Opensource Resources for Cloud Computing
    转:Linux系统下Shell命令行快捷键实用技巧
    sed 替换
  • 原文地址:https://www.cnblogs.com/CherryTab/p/12381311.html
Copyright © 2011-2022 走看看