zoukankan      html  css  js  c++  java
  • Anagrams leetcode java

    题目:

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

    Note: All inputs will be in lower-case.

    题解:

    这道题看所给的字符串数组里面有多少个是同一个变形词变的。这道题同样使用HashMap来帮助存老值和新值,以及帮忙判断是否是变形词。

    首先对每个string转换成char array然后排下序,HashMap里面的key存sort后的词,value存原始的词。然后如果这个排好序的词没在HashMap中出现过,那么就把这个sorted word和unsortedword put进HashMap里面。如果一个sorted word是在HashMap里面存在过的,说明这个词肯定是个变形词,除了把这个词加入到返回结果中,还需要把之前第一个存进HashMap里面的value存入result中。

    代码如下:

     1  public ArrayList<String> anagrams(String[] strs) {
     2      ArrayList<String> result=new ArrayList<String>();
     3      
     4      if (strs==null||strs.length==0)
     5          return result;
     6      
     7      HashMap<String,ArrayList<String>> hm = new HashMap<String, ArrayList<String>>();
     8      
     9      for (String s:strs){
    10          char[] temp=s.toCharArray();
    11          Arrays.sort(temp);
    12          String tempStr=new String(temp);
    13          
    14          if (hm.containsKey(tempStr)){
    15              if(hm.get(tempStr).size() == 1)
    16                 result.add(hm.get(tempStr).get(0));
    17              hm.get(tempStr).add(s);
    18              result.add(s);
    19          }else{
    20              ArrayList<String> tempList=new ArrayList<String>();
    21              tempList.add(s);
    22              hm.put(tempStr, tempList);
    23              }
    24         }
    25         return result;
    26  }

  • 相关阅读:
    236. 二叉树的最近公共祖先
    230. 二叉搜索树中第K小的元素
    221. 最大正方形
    软件构建模式之MVC框架初窥
    九度OnlineJudge之1020:最小长方形
    九度OnlineJudge之1018:统计同成绩学生人数
    九度OnlineJudge之1017:还是畅通工程
    向Python女神推荐这些年我追过的经典书籍
    最实用的10个重构小技巧排行榜,您都用过哪些呢?
    九度OnlineJudge之1014:排名
  • 原文地址:https://www.cnblogs.com/springfor/p/3874667.html
Copyright © 2011-2022 走看看