(记得import java.util.HashMap及Arrays,

首先字符串若为空或者数量为零, 则返回一个空的LinkedList)

1. 把string变为char数组, 再进行排序, 之后重新合为一个string叫mark

2. 建循环, 若hashmap(map)没有mark这个key, 就建一个LinkedList或ArrayList(放字符串的), 再把此哈希值(mark, LinkedList)放入哈希表map

3. 获取(或者已有mark)此时哈希表map里mark对应的value(LinkedList), 再将此时循环的这个字符串放入此时mark对应的LinkedList里

4. 将哈希表map里所有的mark及对应的value都找出来, 若value的表里的字符串的数量大于一的那个LinkedList, 则全都放入一个新的LinkedList(answer)里

5. 将此answer返回

public class Solution {
/**
* @param strs: A list of strings
* @return: A list of strings
*/
public List<String> anagrams(String[] strs) {
if(strs == null) return new LinkedList<String>();
if(strs.length == 0) return new LinkedList<String>(); HashMap<String, List<String>> map = new HashMap<String, List<String>>();
for(int i = 0; i < strs.length; i++){
char[] arr = strs[i].toCharArray();
Arrays.sort(arr);
String mark = new String(arr); if(!map.containsKey(mark)){
List<String> list = new LinkedList<String>();
map.put(mark, list);
}
List<String> l = map.get(mark);
l.add(strs[i]);
} List<String> answer = new LinkedList<String>();
for(String k : map.keySet()){
List<String> list = map.get(k);
if(list.size() > 1){
answer.addAll(list);
}
}
return answer;
// write your code here
}
}

LintCode Anagrams的更多相关文章

  1. lintcode:anagrams 乱序字符串

    题目 乱序字符串 给出一个字符串数组S,找到其中所有的乱序字符串(Anagram).如果一个字符串是乱序字符串,那么他存在一个字母集合相同,但顺序不同的字符串也在S中. 您在真实的面试中是否遇到过这个 ...

  2. LintCode Two Strings Are Anagrams

    1. 把string变为char数组 2. 排序Arrays.sort() public class Solution { /** * @param s: The first string * @pa ...

  3. [LintCode]——目录

    Yet Another Source Code for LintCode Current Status : 232AC / 289ALL in Language C++, Up to date (20 ...

  4. C语言 · Anagrams问题

    问题描述 Anagrams指的是具有如下特性的两个单词:在这两个单词当中,每一个英文字母(不区分大小写)所出现的次数都是相同的.例如,"Unclear"和"Nuclear ...

  5. [LeetCode] Find All Anagrams in a String 找出字符串中所有的变位词

    Given a string s and a non-empty string p, find all the start indices of p's anagrams in s. Strings ...

  6. [LeetCode] Anagrams 错位词

    Given an array of strings, return all groups of strings that are anagrams. Note: All inputs will be ...

  7. (lintcode全部题目解答之)九章算法之算法班题目全解(附容易犯的错误)

    --------------------------------------------------------------- 本文使用方法:所有题目,只需要把标题输入lintcode就能找到.主要是 ...

  8. Lintcode 85. 在二叉查找树中插入节点

    -------------------------------------------- AC代码: /** * Definition of TreeNode: * public class Tree ...

  9. Lintcode 166. 主元素

    ----------------------------------- Moore's voting algorithm算法:从一个集合中找出出现次数半数以上的元素,每次从集合中去掉一对不同的数,当剩 ...

随机推荐

  1. javascript快速排序

    function quickSort(arr){ if(arr.length <= 1) return arr;//判断是否有效数组 var cut = Math.floor(arr.lengt ...

  2. Bootstrap<基础十> 响应式实用工具

    Bootstrap 提供了一些辅助类,以便更快地实现对移动设备友好的开发.这些可以通过媒体查询结合大型.小型和中型设备,实现内容对设备的显示和隐藏. 需要谨慎使用这些工具,避免在同一个站点创建完全不同 ...

  3. 使用Crowd2.7集成Confluence5.3与JIRA6.1,并安装、破解及汉化,实现单点登录【原创】

      鉴于目前没有针对Crowd.Confluence.Jira安装.集成和破解最新的方法,总结今天安装.破解及集成的经验,编写此文,方便大家进行配置也方便自己以后参考.此文参考多篇破解文章,并经过作者 ...

  4. centos 6.6编译安装git-2.7.0 最新git编译安装

    系统环境:centos6.6 1,安装准备 yum -y install gcc zlib-devel openssl-devel perl cpio expat-devel gettext-deve ...

  5. http get/post解决乱码问题

    <form method="默认为get"-> <s:form mothod="默认为post"-> ================= ...

  6. css初始化

    Css初始化代码: *{padding:0px;margin:0px;} body{font-size:12px;font-family: "宋体",Arial Black;tex ...

  7. LLDB, iOS调试器

    breakpoint set -s "" breakpoint set    -M <method> ( --method <method> )    -S ...

  8. DataTable 删除列 调整列顺序 修改列标题名称

    DataTable dt = new DataTable(); //删除列 dt.Columns.Remove("Sex"); dt.Columns.Remove("Ag ...

  9. python 异常处理学习笔记

    搬运至慕课网,精华截图,视频链接在这  : http://www.imooc.com/learn/457 1. 异常检查目的 2. python 可能出现的异常 3. 异常的处理过程 try - ex ...

  10. intellij idea 初步环境熟悉

    刚进来天渔项目组,连开发环境都是新的,学习至上 so 从eclipse过度过来还是有段时间的,期间虽然懵懂,但是也要坚持不耻下问 好了一下是idea的官网http://confluence.jetbr ...