码迷,mamicode.com
首页 > 其他好文 > 详细

Anagrams

时间:2018-07-03 23:58:04      阅读:299      评论:0      收藏:0      [点我收藏+]

标签:for   dir   ash   oid   ups   map   rate   因此   []   

描述
Given an array of strings, return all groups of strings that are anagrams.
Note: All inputs will be in lower-case.
分析
Anagram(回文构词法)是指打乱字母顺序从而得到新的单词,比如 "dormitory" 打乱字母顺
序会变成 "dirty room" ,"tea" 会变成"eat"。
回文构词法有一个特点:单词里的字母的种类和数目没有改变,只是改变了字母的排列顺序。
因此,将几个单词按照字母顺序排序后,若它们相等,则它们属于同一组 anagrams 。
代码

 1 import java.util.ArrayList;
 2 import java.util.HashMap;
 3 import java.util.*;
 4 
 5 public class Anagrams {
 6 
 7     public static void main(String[] args) {
 8         // TODO Auto-generated method stub
 9         //用map的键存有序字母,再有与之一样的就输入
10         String[] strs = { "tea","dormitory","eat","dirtyroom"};
11         ArrayList<String> result = anagrams(strs);
12         for (String s : result) {
13             System.out.println(s);
14         }
15     }
16 
17     public static ArrayList<String> anagrams(String[] strs) {
18         ArrayList<String> result = new ArrayList<String>();
19         if (strs == null || strs.length == 0) 
20             return result;
21             HashMap<String, ArrayList<String>> map = new HashMap<String, ArrayList<String>>();
22             for (String s : strs) {
23                 char[] temp = s.toCharArray();
24                 Arrays.sort(temp);
25                 String tempstr = new String(temp);
26 
27                 if (map.containsKey(tempstr)) {
28                     if (map.get(tempstr).size() == 1) {// ArrayList的长度
29                         result.add(map.get(tempstr).get(0));  //将之前的单词也输入进
30                     }
31                     map.get(tempstr).add(s);
32                     result.add(s);
33                 } else {
34                     ArrayList<String> templist = new ArrayList<String>();
35                     templist.add(s);
36                     map.put(tempstr, templist);
37                 }
38             }
39             return result;
40         }
41     
42 }

 

Anagrams

标签:for   dir   ash   oid   ups   map   rate   因此   []   

原文地址:https://www.cnblogs.com/ncznx/p/9260850.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!