zoukankan      html  css  js  c++  java
  • Group Anagrams

    package cn.edu.xidian.sselab.hashtable;

    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.Collections;
    import java.util.HashMap;
    import java.util.HashSet;
    import java.util.List;
    import java.util.Map;
    import java.util.Set;

    /**
     *
     * @author zhiyong wang
     * title: Group Anagrams
     * content:
     * Given an array of strings, group anagrams together.
     *
     * For example, given: ["eat", "tea", "tan", "ate", "nat", "bat"],
     * Return:
     *
     * [
     *   ["ate", "eat","tea"],
     *   ["nat","tan"],
     *   ["bat"]
     * ]
     *
     * Note:
     *
     *     For the return value, each inner list's elements must follow the lexicographic order.
     *     All inputs will be in lower-case.
     *
     *
     */
    public class GroupAnagrams {
        //参考大神的做法,自己没有想到可以用map作为容器进行存储,key为排序之后的一个串,value就是这个串对应的list
        //因为每个子list要求是排序的,所以第一步,先对strs里面所有的字符串进行排序,这样添加到每个list里面的就是排好序的
        public List<List<String>> groupAnagrams(String[] strs){
            if(strs == null || strs.length == 0) return new ArrayList<List<String>>();
            Arrays.sort(strs);
            Map<String,List<String>> map = new HashMap<String,List<String>>();
            for(int i=0;i<strs.length;i++){
                String temp = strs[i];
                char[] beforeSort = temp.toCharArray();
                Arrays.sort(beforeSort);
                String afterSort = String.valueOf(beforeSort);
                if(!map.containsKey(afterSort)) map.put(afterSort, new ArrayList<String>());                
                    map.get(afterSort).add(temp);
            }
            return new ArrayList<List<String>>(map.values());
        }
    }

  • 相关阅读:
    php实现base64图片上传方式实例代码
    Html5 js FileReader接口
    获取月份
    JS实现双击编辑可修改
    SimpleMDE编辑器 + 提取HTML + 美化输出
    基于visual Studio2013解决C语言竞赛题之0608水仙花函数
    基于visual Studio2013解决C语言竞赛题之0607strcpy
    基于visual Studio2013解决C语言竞赛题之0605strcat
    android --静默安装
    基于visual Studio2013解决C语言竞赛题之0604二维数组置换
  • 原文地址:https://www.cnblogs.com/wzyxidian/p/5204272.html
Copyright © 2011-2022 走看看