lintcode:anagrams 乱序字符串
题目
乱序字符串
给出一个字符串数组S,找到其中所有的乱序字符串(Anagram)。如果一个字符串是乱序字符串,那么他存在一个字母集合相同,但顺序不同的字符串也在S中。
对于字符串数组 ["lint","intl","inlt","code"]
返回 ["lint","inlt","intl"]
所有的字符串都只包含小写字母
解题
感觉很简单,搞了近两个小时,写了下面的程序
public class Solution {
/**
* @param strs: A list of strings
* @return: A list of strings
*/
public List<String> anagrams(String[] strs) {
// write your code here
List<String> list = new ArrayList<String>();
if(strs.length == 0 || strs ==null)
return list;
int i=0;
int j=0;
int k = -1;
while(i<strs.length ){
while(j< strs.length ){
if(compare(strs[i],strs[j])){
k=i;
break;
}else{
j++;
}
}
if(k==i) break;
i++;
}
if(k==-1)
return list;
list.add(strs[k]);
for( i=0;i<strs.length ;i++)
if(i!=k && compare(strs[k],strs[i]))
list.add(strs[i]);
return list;
}
public boolean compare(String str1,String str2){
HashMap<Character,Integer> map = new HashMap<Character,Integer>();
if(str1.length()!= str2.length())
return false;
for(int i=0;i<str1.length();i++){
char ch = str1.charAt(i);
if(!map.containsKey(ch)){
map.put(ch,1);
}else{
map.put(ch,map.get(ch)+1);
}
}
for(int j=0;j<str2.length();j++){
char ch = str2.charAt(j);
if(!map.containsKey(ch)){
return false;
}else{
map.put(ch,map.get(ch)-1);
if(map.get(ch)<0)
return false;
}
}
return true;
}
}
Java Code
然而可以有多个
输入
["tea","","eat","","tea",""]
输出
["eat","tea","tea"]
期望答案
["","","","eat","tea","tea"]
简书给的程序很好,或者说作者很会想,把由相同字母组成的单词映射到同一个key值
这里,对单词排序后,统计出现的次数,也是让映射的key值唯一
programcreek 也是排序的方法
Java
public class Solution {
/**
* @param strs: A list of strings
* @return: A list of strings
*/
public List<String> anagrams(String[] strs) {
// write your code here
List<String> list = new ArrayList<String>();
if(strs == null || strs.length ==0)
return list;
Map<String,Integer> map = new HashMap<String,Integer>();
String[] strs2 = new String[strs.length];
for(int i=0;i< strs.length;i++){
char[] ch = strs[i].toCharArray();
Arrays.sort(ch);
strs2[i] = String.valueOf(ch);
if(!map.containsKey(strs2[i])){
map.put(strs2[i],1);
}else{
map.put(strs2[i],map.get(strs2[i]) + 1);
}
}
for(int i=0;i<strs.length;i++){
if(map.get(strs2[i]) >1)
list.add(strs[i]);
}
// if(strs.length >=6)
// System.out.println(0);
return list;
}
}
Java Code
lintcode:anagrams 乱序字符串的更多相关文章
- 乱序字符串anagrams
[抄题]: 给出一个字符串数组S,找到其中所有的乱序字符串(Anagram).如果一个字符串是乱序字符串,那么他存在一个字母集合相同,但顺序不同的字符串也在S中. 对于字符串数组 ["lin ...
- Lintcode--003(乱序字符串)
给出一个字符串数组S,找到其中所有的乱序字符串(Anagram).如果一个字符串是乱序字符串,那么他存在一个字母集合相同,但顺序不同的字符串也在S中. 注意事项 所有的字符串都只包含小写字母 样例 ...
- 760. Find Anagram Mappings乱序字符串的坐标位置
[抄题]: Given two lists Aand B, and B is an anagram of A. B is an anagram of A means B is made by rand ...
- LintCode-乱序字符串
题目描述: 给出一个字符串数组S,找到其中所有的乱序字符串(Anagram).如果一个字符串是乱序字符串,那么他存在一个字母集合相同,但顺序不同的字符串也在S中. 注意事项 所有的字符串都只包含小写字 ...
- lintcode-171-乱序字符串
171-乱序字符串 给出一个字符串数组S,找到其中所有的乱序字符串(Anagram).如果一个字符串是乱序字符串,那么他存在一个字母集合相同,但顺序不同的字符串也在S中. 注意事项 所有的字符串都只包 ...
- VC6.0 多线程输出乱序问题
今天尝试编写多线程最简单的例子 #include "stdafx.h" #include "windows.h" #include <iostream&g ...
- 【转】文件中有10G个整数,乱序排列,要求找出中位数
题目:在一个文件中有 10G 个整数,乱序排列,要求找出中位数.内存限制为 2G.只写出思路即可(内存限制为 2G的意思就是,可以使用2G的空间来运行程序,而不考虑这台机器上的其他软件的占用内存). ...
- [Android Security] APK自我保护 - 代码乱序
cp : https://segmentfault.com/a/1190000005095406 乱序原理 为了增加逆向分析的难度,可以将原有代码在 smali 格式上进行乱序处理同时又不会影响程序的 ...
- sort排序bug乱序
项目需要对组件的zIndex值进行降序排列,刚开始采用的是sort进行排序,排完之后感觉没问题,毕竟也是经常用的,可是昨天无意中把zIndex值打出来看,一看不知道,发现只要排序的组件超过10个就出问 ...
随机推荐
- CentOS6.5升级手动安装gcc4.8.2
一.简易安装 操作环境 CentOS6.5 64bit,原版本4.4.7,不能支持C++11的特性~,希望升级到4.8.2 不能通过yum的方法升级,需要自己手动下载安装包并编译 1.1 获取安装包并 ...
- Silverlight动画的基本知识、关键帧动画
基础知识 (一)动画:是快速播放一系列图像(其中每个图像与下一个图像略微不同)给人造成的一种幻觉 (二)动画类型:两类 (1)From/To/By动画:在起始值和结束值之间进行动画处理. ...
- 一路走过的2013,welcome to 2014
驻入博客园,还是在大学时,至今没写过一篇博客,一直都是在看人家写的博客.2014 年第一天,就从这一天,开启博客之旅,与大家分享好书,分享技术,结交好朋友. 简单,介绍下自己,大三实习,因为热衷于互联 ...
- 用nodejs删除mongodb中ObjectId类型数据
mongodb中"_id"下面有个ObjectId类型的数据,想通过这个数据把整个对像删除,费了半天劲终于搞定费话少说上代码 module.exports = function ( ...
- 内部技术分享的 PPT
本文的基础是搞了一次内部的技术分享,在此也分享一下本次的PPT的一些内容.先列一下大概内容吧. EF-Code First API(WCF.WebAPI) Xaml MVVM AOP Xamarin. ...
- java之classpath到底是什么
如果你输入一个命令,比如java那么系统是如何找到这个命令的呢?按照顺序,系统先在当前目录搜索是否有java.exe, java.bat 等. 如果没有,就得到系统的PATH(不区分大小写)里面查找. ...
- Linux 批量解压gz包
[root@yoon export]# vi gunzip.sh !/bin/bashpath=/export/backup ----备份文件目录路径 for i in `ls ${path}/*`d ...
- Nginx模块开发1_明白自定义模块的编译流程
自定义模块的编译流程 --add-module参数 configure使用--add-module参数指定添加模块目录. config脚本 由--add-module指定的目录保存为$ngx-addo ...
- UIActivityIndicatorView的使用
class ViewController: UIViewController,UIActionSheetDelegate{ @IBOutlet weak var label1: UILabel! @I ...
- JavaWeb常见错误总结
错误1:(Ajax未加载问题) 今天我在学习AJAX的时候,想从一个JS文件中引入JQuery,然后在这个JS文件中使用AJAX的方法.结果V8引擎一直报错,错误类型是Uncaught Referen ...