zoukankan      html  css  js  c++  java
  • Anagrams

    描述
    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 }
  • 相关阅读:
    CC2540-BLE4.0 学历笔记1之串口体验
    cc2530的PWM实现
    用qt写的一个简单到不能在简单的上位机
    在Kubuntu14.04中安装小企鹅输入法
    初始化umi项目
    工具杂记(三) -- zookeeper
    工具杂记(二) -- Centos7
    工具杂记(一) -- vagrant
    (一)Docker导学
    JVM随笔(二)之搜索类
  • 原文地址:https://www.cnblogs.com/ncznx/p/9260850.html
Copyright © 2011-2022 走看看