编写一个方法,对字符串进行排序,将所有变位词排在相邻的位置
2015-09-03 17:34
501 查看
编写一个方法,对字符串进行排序,将所有变位词排在相邻的位置。
注:变位词是指由变换某个词或短语的字母顺序构成的新的词或短语。例如:”triangle“是”integral“的变位词。
public class AnagramComparator implements Comparator<String>
{
public String sortChars(String s)
{
char [] content=s.toCharArray();
Array.sort(content);
return new String(content);
}
public int compare(String s1,String s2)
{
return sortChars(s1).compareTo(sortChars(s2));
}
}
public void sort(String[] array)
{
Hashtable<String,LinkedList<String>> hash=new Hashtable<String ,LinkedList<String>>();
//将同为变位词的单词分在同一组
for(String s:array)
{
String key=sortChars(s);
if(!hash.containsKey(key))
{
hash.put(key,new LinkedList<String>());
}
LinkedList<String> anagrams=hash.get(key);
anagrams.push(s);
}
/*
将散列表转换为数组
*/
int index=0;
for(String key:hash.keySet())
{
LinkedList<String> list=hash.get(key);
for(String t:list)
{
array[index]=t;
index++;
}
}
}
上面的算法是从桶排序法修改而来。
相关文章推荐
- MD5-总结
- Redhat/CentOS安装vsftp软件
- 升级chrome出现SELinux问题的解决方法
- cocos2d HTTP 通信封装
- ATS 5.3.0分级缓存
- 经典同步问题--生产者和消费者
- 体验Java的封装性
- hihoCoder #1151 : 骨牌覆盖问题·二 (矩阵快速幂,DP)
- 九度OJ 题目1121:首字母大写
- Linux C语言程序设计(十五)——进程、线程与信号
- hdoj 3917 Road constructions 【最小割 之 最大权闭合图】
- 【C语言】结构体
- 常用排序算法总结
- 一些学习资料
- 我们总希望通过救赎别人来达到自我救赎
- MapReduce应用实例--排序
- Javascript高级程序设计——面向对象之创建对象
- 不能与直系上司同时参加聚会求最大人数 有根树形DP 最大独立集 poj 3342
- C#判断系统是64位还是32位 支持.net4.0以前的版本
- HTTP状态码