LeetCode: Anagrams 解题报告

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

这道题之前用暴力写的O(N^2)的TLE了,改用Hashtable来写
题目的意思是给一个String数组,找出其中由相同字母组成的单词。
例如:
S = ["abc", "bca", "bac", "bbb", "bbca", "abcb"]
答案为:
["abc", "bca", "bac", "bbca", "abcb"]
只有"bbb"没有相同字母组成的单词。

ref: http://blog.csdn.net/fightforyourdream/article/details/14217985

 1 public class Solution {
 2     public List<String> anagrams(String[] strs) {
 3         List<String> ret = new ArrayList<String>();
 4
 5         if (strs == null) {
 6             return ret;
 7         }
 8
 9         HashMap<String, List<String>> map = new HashMap<String, List<String>>();
10
11         int len = strs.length;
12         for (int i = 0; i < len; i++) {
13             String s = strs[i];
14
15             // Sort the string.
16             char[] chars = s.toCharArray();
17             Arrays.sort(chars);
18             String strSort = new String(chars);
19
20             // Create a ArrayList for the sorted string.
21             if (!map.containsKey(strSort)) {
22                 map.put(strSort, new ArrayList<String>());
23             }
24
25             // Add a new string to the list of the hashmap.
26             map.get(strSort).add(s);
27         }
28
29         // go through the map and add all the strings into the result.
30         for (Map.Entry<String, List<String>> entry: map.entrySet()) {
31             List<String> list = entry.getValue();
32
33             // skip the entries which only have one string.
34             if (list.size() == 1) {
35                 continue;
36             }
37
38             // add the strings into the list.
39             ret.addAll(list);
40         }
41
42         return ret;
43     }
44 }

https://github.com/yuzhangcmu/LeetCode_algorithm/blob/master/hash/Anagrams.java

时间: 2024-10-29 02:01:25

LeetCode: Anagrams 解题报告的相关文章

LeetCode: Permutations 解题报告

Permutations Given a collection of numbers, return all possible permutations. For example,[1,2,3] have the following permutations:[1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], and [3,2,1]. SOLUTION 1: 经典的递归回溯题目,一次ACCEPT. 请也参考上一个题目LeetCode: Combination

[LeetCode]3Sum,解题报告

题目 Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find all unique triplets in the array which gives the sum of zero. Note: Elements in a triplet (a,b,c) must be in non-descending order. (ie, a ≤ b ≤ c) The so

[LeetCode]Candy, 解题报告

前言 回学校写论文差不多快二周的时间了,总结一句话,在学校真舒服.花了7天时间搞定了毕业论文初稿(之所以这么快肯定跟我这三年的工作量相关了),不过今天导师批复第二章还是需要修改.此外,最近迷上打羽毛球,确实很爽,运动量仅此于篮球,可以场地有限,哎,且打且珍惜吧. 题目 There are N children standing in a line. Each child is assigned a rating value. You are giving candies to these chi

【LeetCode】Anagrams 解题报告

[题目] Given an array of strings, return all groups of strings that are anagrams. Note: All inputs will be in lower-case. [解析] 题意:给定一个字符串数组,返回所有是"换位词"的字符串. 所谓"换位词/变位词"就是包含相同字母,但字母顺序可能不同的字符串.比如"abc", "bca", "cab&q

Single Number | LeetCode OJ 解题报告

题目网址:https://oj.leetcode.com/problems/single-number/ 题目描述: Given an array of integers, every element appears twice except for one. Find that single one. Note: Your algorithm should have a linear runtime complexity. Could you implement it without usin

Add Two Numbers | LeetCode OJ 解题报告

题目网址:https://oj.leetcode.com/problems/add-two-numbers/ 题目描述: You are given two linked lists representing two non-negative numbers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return i

Two Sum | LeetCode OJ 解题报告

题目网址:https://oj.leetcode.com/problems/two-sum/ 题目描述: Given an array of integers, find two numbers such that they add up to a specific target number. The function twoSum should return indices of the two numbers such that they add up to the target, whe

LeetCode: isSameTree1 解题报告

isSameTree1 Given two binary trees, write a function to check if they are equal or not. Two binary trees are considered equal if they are structurally identical and the nodes have the same value. SOLUTION 1 & SOLUTION 2: 以下是递归及非递归解法: 1. 递归解法就是判断当前节点是

LeetCode: Subsets 解题报告

Subsets Given a set of distinct integers, S, return all possible subsets. Note: Elements in a subset must be in non-descending order. The solution set must not contain duplicate subsets. For example, If S = [1,2,3], a solution is: [ [3], [1], [2], [1