zoukankan      html  css  js  c++  java
  • [Leetcode]-- Anagrams

    Given an array of strings, return all groups of strings that are anagrams.
    Note: All inputs will be in lower-case.
     

    思路:

    建Hashtable,用排序过的string作为key,它的anagram作为ArrayList

    题目的意思是给一个String数组,找出其中由相同字母组成的单词。
    例如:
    S = ["abc", "bca", "bac", "bbb", "bbca", "abcb"]
    答案为:
    ["abc", "bca", "bac", "bbca", "abcb"]
    只有"bbb"没有相同字母组成的单词。

     
    public class Solution {
        public  String sortChars(String s) {
            char[] content = s.toCharArray();
            Arrays.sort(content);
            return new String(content);
        }   
    
        public ArrayList<String> anagrams(String[] strs) {
            ArrayList<String> res = new ArrayList<String>();
            HashMap<String, LinkedList<String>> hash = new HashMap<String, LinkedList<String>>();
         
            /* Group words by anagram */
            for (String s : strs) {
                String key = sortChars(s); 
                if (!hash.containsKey(key)) {
                    hash.put(key, new LinkedList<String>());
                }   
                LinkedList<String> anagrams = hash.get(key);
                anagrams.push(s);
            } 
            for (String key : hash.keySet()) {
                LinkedList<String> list = hash.get(key);
                if (list.size() > 1) {
                    for (String t : list) {
                        res.add(t);
                    }   
                }
            }   
            return res;
        }
    }
  • 相关阅读:
    [2010山东ACM省赛] Balloons(搜索)
    [2010山东ACM省赛] Greatest Number(数的组合+二分搜索)
    [ACM] hdu 1213 How Many Tables(并查集)
    C Shuffle Cards
    快速读入输出模板
    J Distance to Work
    E Sort String
    H Diff-prime Pairs
    A PACM Team
    区间 (interval)
  • 原文地址:https://www.cnblogs.com/RazerLu/p/3536709.html
Copyright © 2011-2022 走看看