(171)乱序字符串
2015-10-22 13:21
344 查看
中等 乱序字符串
查看运行结果
21%通过
给出一个字符串数组S,找到其中所有的乱序字符串(Anagram)。如果一个字符串是乱序字符串,那么他存在一个字母集合相同,但顺序不同的字符串也在S中。
您在真实的面试中是否遇到过这个题?
Yes
样例
对于字符串数组 ["lint","intl","inlt","code"]
返回 ["lint","inlt","intl"]
注意
所有的字符串都只包含小写字母
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
public class 乱序字符串 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String[] s ={"lint","intl","inlt","code"};
List<String> li = new ArrayList<String>();
li = anagrams(s);
System.out.println(li);
}
public static List<String> anagrams(String[] strs) {
Map<String,Integer> m = new HashMap<String,Integer>();
List<String> list = new ArrayList<String>();
m = putStringToMap(m,strs);
int len = strs.length;
for(int i=0;i<len;i++)
{
if(compareToRight(m,strs[i]))
{
list.add(strs[i]);
}
}
return list;
}
private static boolean compareToRight(Map<String, Integer> m, String string) {
char[] c = string.toCharArray();
Arrays.sort(c);
string = new String(c);
if(m.containsKey(string))
{
int num = m.get(string);
if(num>1)
{
return true;
}
}
return false;
}
private static Map<String, Integer> putStringToMap(Map<String, Integer> m, String[] strs) {
int len = strs.length;
for(int i=0;i<len;i++)
{
String newString = strs[i];
char[] str = newString.toCharArray();
Arrays.sort(str);
String ss = new String(str);
if(m.containsKey(ss))
{
m.remove(ss);
m.put(ss,3);
}
else {
m.put(ss, 1);
}
}
return m;
}
}
相关文章推荐
- PBOC 文件结构详解1
- CountDownLatch简单介绍
- 第一章 基本语法-6循环(for)练习 求一个数的所有约数
- 【实验】button的使用、动态添加组件
- Linux网络流量实时监控ifstat iftop命令详解(系列二)
- 使用photoswipe展示图片
- 老李分享:走读unittest源码
- usaco 1.3.7wormhole
- 在项目中使用百度地图sdk
- Android_08_样式和主题
- JavaScript中为何需要用var来申明变量
- R语言-read.table读CSV文件数据
- 遗传算法和bp神经网络结合(神经网络权值学习)
- Java学习笔记(一)——HelloWorld
- 动态将表中的列名全部转换成小写
- 调节系统音量VC++(适合win和xp系统) 打开静音 增减和减小系统音量
- LeetCode(137) Single Number II
- Linux进程实时IO监控iotop命令详解 (系列一)
- 九度OJ 1075:斐波那契数列 (数字特性)
- 九度OJ 1075:斐波那契数列 (数字特性)