LintCode Anagrams
(记得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的更多相关文章
- lintcode:anagrams 乱序字符串
题目 乱序字符串 给出一个字符串数组S,找到其中所有的乱序字符串(Anagram).如果一个字符串是乱序字符串,那么他存在一个字母集合相同,但顺序不同的字符串也在S中. 您在真实的面试中是否遇到过这个 ...
- LintCode Two Strings Are Anagrams
1. 把string变为char数组 2. 排序Arrays.sort() public class Solution { /** * @param s: The first string * @pa ...
- [LintCode]——目录
Yet Another Source Code for LintCode Current Status : 232AC / 289ALL in Language C++, Up to date (20 ...
- C语言 · Anagrams问题
问题描述 Anagrams指的是具有如下特性的两个单词:在这两个单词当中,每一个英文字母(不区分大小写)所出现的次数都是相同的.例如,"Unclear"和"Nuclear ...
- [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 ...
- [LeetCode] Anagrams 错位词
Given an array of strings, return all groups of strings that are anagrams. Note: All inputs will be ...
- (lintcode全部题目解答之)九章算法之算法班题目全解(附容易犯的错误)
--------------------------------------------------------------- 本文使用方法:所有题目,只需要把标题输入lintcode就能找到.主要是 ...
- Lintcode 85. 在二叉查找树中插入节点
-------------------------------------------- AC代码: /** * Definition of TreeNode: * public class Tree ...
- Lintcode 166. 主元素
----------------------------------- Moore's voting algorithm算法:从一个集合中找出出现次数半数以上的元素,每次从集合中去掉一对不同的数,当剩 ...
随机推荐
- javascript快速排序
function quickSort(arr){ if(arr.length <= 1) return arr;//判断是否有效数组 var cut = Math.floor(arr.lengt ...
- Bootstrap<基础十> 响应式实用工具
Bootstrap 提供了一些辅助类,以便更快地实现对移动设备友好的开发.这些可以通过媒体查询结合大型.小型和中型设备,实现内容对设备的显示和隐藏. 需要谨慎使用这些工具,避免在同一个站点创建完全不同 ...
- 使用Crowd2.7集成Confluence5.3与JIRA6.1,并安装、破解及汉化,实现单点登录【原创】
鉴于目前没有针对Crowd.Confluence.Jira安装.集成和破解最新的方法,总结今天安装.破解及集成的经验,编写此文,方便大家进行配置也方便自己以后参考.此文参考多篇破解文章,并经过作者 ...
- 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 ...
- http get/post解决乱码问题
<form method="默认为get"-> <s:form mothod="默认为post"-> ================= ...
- css初始化
Css初始化代码: *{padding:0px;margin:0px;} body{font-size:12px;font-family: "宋体",Arial Black;tex ...
- LLDB, iOS调试器
breakpoint set -s "" breakpoint set -M <method> ( --method <method> ) -S ...
- DataTable 删除列 调整列顺序 修改列标题名称
DataTable dt = new DataTable(); //删除列 dt.Columns.Remove("Sex"); dt.Columns.Remove("Ag ...
- python 异常处理学习笔记
搬运至慕课网,精华截图,视频链接在这 : http://www.imooc.com/learn/457 1. 异常检查目的 2. python 可能出现的异常 3. 异常的处理过程 try - ex ...
- intellij idea 初步环境熟悉
刚进来天渔项目组,连开发环境都是新的,学习至上 so 从eclipse过度过来还是有段时间的,期间虽然懵懂,但是也要坚持不耻下问 好了一下是idea的官网http://confluence.jetbr ...