[leedcode 49] Anagrams

Given an array of strings, return all groups of strings that are anagrams.

Note: All inputs will be in lower-case.

public class Solution {
    public List<String> anagrams(String[] strs) {
        //Anagram(回文构词法)是指打乱字母顺序从而得到新的单词,比如 "dormitory" 打乱字母顺
        //序会变成 "dirty room" , "tea" 会变成"eat"。
        //回文构词法有一个特点:单词里的字母的种类和数目没有改变,只是改变了字母的排列顺序。
        //因此,将几个单词按照字母顺序排序后,若它们相等,则它们属于同一组 anagrams 。
        //解题思路:本文借用HashMap<String,Integer>数据结构,key保存的是排完序的字符串,value代表该字符串的索引值。
        //遍历一个字符串,排序后,如果该字符串已经存在,则保存结果,注意为了防止重复添加,当添加第二个时,需要将value置-1
        //一遍出现大于2个字符串时,不会重复。
        //注意ArraySort(char[]),参数必须是char[],注释部分不能少
        List<String> res=new ArrayList<String>();
        HashMap<String ,Integer> map=new HashMap<String,Integer>();
        for(int i=0;i<strs.length;i++){
            char[] tmp=strs[i].toCharArray();
            Arrays.sort(tmp);//不能少,不能写成Arrays.sort(tmp.toCharArray())
            String temp=new String(tmp);//不能少,输入“”时
            if(map.containsKey(temp)){
                res.add(strs[i]);
                if(map.get(temp)!=-1){
                     res.add(strs[map.get(temp)]);
                     map.put(temp,-1);
                }
            }else{
                map.put(temp,i);
            }
        }
        return res;
    }
}
时间: 2024-10-29 12:30:33

[leedcode 49] Anagrams的相关文章

No.49 Anagrams[易位构词]

No.49 Anagrams Given an array of strings, return all groups of strings that are anagrams. Note: All inputs will be in lower-case. Tags: Hash Table String 难点: 1.没有读清题意,对易位构词的理解不到位 2.题意不明了.输入为一系列字符串,别与回文记混淆了 3.第一次见到,不是很了解,完全没思路 具体分析: 易位构词:两个单词所包含的字符和数量

49 Anagrams

49 Anagrams 链接:https://leetcode.com/problems/anagrams/ 问题描述: Given an array of strings, return all groups of strings that are anagrams. Note: All inputs will be in lower-case. Hide Tags Hash Table String 首先解释题目的意思,给出许多单词,如果单词中的字母都一样,只是顺序不一样,那么它们属于同一组

leetcode 49. Anagrams

Given an array of strings, return all groups of strings that are anagrams. Note: All inputs will be in lower-case. [Solution] FOR ANY string st IN strs, 1) sort st 2) hash st, since st is sorted, all anagrams will be hash to one value. 1 vector<strin

leetCode 49.Anagrams (回文构词法) 解题思路和方法

Anagrams Given an array of strings, return all groups of strings that are anagrams. Note: All inputs will be in lower-case. 思路:这题要是解,必须知道什么是回文构词法.所谓回文构词法就是把一个单词的顺序调整,形成新的单词,如"eat","tea"就是回文构词法. 所以回文构词法一定是相同的字母不同的顺序,而且最少有两个单词. 本题是将单词排序之

LeetCode All in One 题目汇总

228 Summary Ranges 21.10% Easy 227 Basic Calculator II 18.00% Medium 226 Invert Binary Tree 35.40% Easy 225 Implement Stack using Queues 29.60% Medium 224 Basic Calculator 15.80% Medium 223 Rectangle Area 25.60% Easy 222 Count Complete Tree Nodes 19.

Leetcode 题目列表(难度、出现频率、知识点)

不全,但好像没看到有更好的版本,刷前132题暂时凑合着用吧! 转载自:LeetCode Question Difficulty Distribution               1 Two Sum 2 5 array sort         set Two Pointers 2 Add Two Numbers 3 4 linked list Two Pointers           Math 3 Longest Substring Without Repeating Character

【转载】非常棒的算法面试类资源汇总

今天看到了这篇文章,非常非常棒:http://blog.csdn.net/nedushy123/article/details/23827361 把内容转载如下,以作收藏: 经典算法面试题一览 1. 自然就是careercup (类似的网站还有glassdoor) careercup不难,参考二爷划的重点,早早开始做,即使先开始做前几章简单的.一亩三分地经常有刷题活动. Cracking the Coding Interview v5  8.9/88     2. leetcode的题稍难一些,

leetcode&amp;编程之美——博文目录

leetcode刷题整理: 1——Two Sum(哈希表hashtable,map) 2——Add Two Numbers(链表) 3——Longest Substring Without Repeating Characters(set,哈希表,两个指针) 9——Palindrome Number (数学问题) 11——Container With Most Water(两个指针) 12——Integer to Roman(string,数学问题) 13——Roman to Integer(s

LeetCode 刷题顺序表

Id Question Difficulty Frequency Data Structures Algorithms 1 Two Sum 2 5 array + set sort + two pointers 2 Add Two Numbers 3 4 linked list two pointers + math 3 Longest Substring Without Repeating Characters 3 2 string + hashtable two pointers 4 Med