【Java】编写一个方法,对字符串数组进行排序,将所有变位词排在相邻的位置
来源:互联网 发布:潜水教练 知乎 编辑:程序博客网 时间:2024/05/17 03:58
编写一个方法,对字符串数组进行排序,将所有变位词排在相邻的位置
只要求将变位词排在一起,没有要求这些词按照什么顺序排在一起。怎么检查两个词是不是变位词呢?统计每个字符串中各个字符出现的次数,如果两者都相同则返回true。
或者,直接将字符串进行排序,如果两个字符串排序后相同,则一定是变位词。
import java.util.Arrays;import java.util.Comparator;import java.util.Hashtable;import java.util.LinkedList;public class arrangeComparator implements Comparator<String>{public String sortChars(String s) {char[] content = s.toCharArray();Arrays.sort(content);return new String(content);}public int compare(String s1, String s2) {return sortChars(s1).compareTo(sortChars(s2));}}
这么做的时间复杂度是O(n*log(n),但其实,并不需要对整个数组排序,我们只需要将变位词都分在一起即可。
那么可以考虑用到散列表,将排序后的词映射到它的变位词链表里。
public void sort(String[] array) {Hashtable<String, LinkedList<String>> hash = new Hashtable<String, LinkedList<String>>();<span style="white-space:pre"></span>//将变位词放在同一组,key为排序后的字符串,anagrams是存放变位词的链表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;}}}
0 0
- 【Java】编写一个方法,对字符串数组进行排序,将所有变位词排在相邻的位置
- 编写一个方法,对字符串进行排序,将所有变位词排在相邻的位置
- 程序员面试金典: 9.11 排序与查找 11.1编写一个方法,对字符串数组进行排序,将所有变位词排在相邻的位置。
- 对字符串数组进行排序,将所有变位词排在相邻的位置。
- 对字符串数组进行排序,将变位词排在相邻位置
- 9.11排序与查找(二)——对字符串数组进行排序,将所有的变位词排在相邻的位置
- 变位词排在相邻的位置
- 有一个由大小写组成的字符串,现在需要对他进行修改,将其中的所有小写字母排在大写字母的前面
- 【Java】有个排序后的字符串数组,其中散布着一些空字符串,编写一个方法,找出给定字符串的位置
- 编写程序,测试字符串“你好,欢迎来到Java世界”的长度,将字符串的长度转换成字符串进行输出,并对其中的“Java”四个字母进行截取,输出截取字母以及它在字符串中的位置。
- 17、有一个由大小写组成的字符串,现在需要对他进行修改, 将其中的所有小写字母排在答谢字母的前面(大写或小写字母之间不要求保持原来次序)
- Sorting&Searching 基于变位词的字符串数组排序 @CareerCup
- 在一个词典中找出所有的变位词
- C++利用指针数组和快排对输入的字符串进行排序
- 对字符串数组进行排序,在冒泡法排序中使用compareTo()方法确定排序的顺序。
- 用JAVA编写一个算法实现对一个字符数组的所有元素的所有组合
- java排序,随机生成一个数组,对其进行排序,偶数在前奇数在后,偶数从小到大排,奇数从大到小排
- Java 对一个带空格的字符串进行排序
- VPN是什么?
- MATLAB数值取整
- Target runtime com.genuitec.runtime.generic.jee60 is not defined的解决方案
- MSTSC 通过CONSOLE远程登陆
- C#中如何简单的设置session的过期时间
- 【Java】编写一个方法,对字符串数组进行排序,将所有变位词排在相邻的位置
- 如何使用ListView?
- poj 3301 Texas Trip 三分搜索
- 12. JavaScript Number 对象
- The connection to adb is down, and a severe error has occured.问题解决方法小结
- 欢迎使用CSDN-markdown编辑器
- Linux下文件操作的基本函数及分析
- SPOJ 375 Query on a tree (树链剖分+线段树)
- 使用Github依赖库实现Android5.0新特性——CardView