变位词排序
来源:互联网 发布:linux命令行大全 mobi 编辑:程序博客网 时间:2024/04/29 10:24
package 变位词排序;import java.lang.reflect.Array;import java.util.*;/** * Created by h on 16-12-20. */public class Solution { public ArrayList<String> sortStrings(String[] str, int n) { // write code here ArrayList<String> res = new ArrayList<String>(); HashSet<String> hs = new HashSet<String>(); for (int i = 0; i < str.length; i++) { char[] chars = str[i].toCharArray();//对于原数组中的每个字符串 Arrays.sort(chars);//排序 if (!hs.add(new String(chars))) {//如果set中存在该字符串,说明res中有个变位相同的字符串 int size = res.size(); for (int j = 0; j < size; j++) {//找到该变位词,并决定留哪个。 String s = new String(res.get(j)); if (s.length() == str[i].length()) {//如果长度相同,就有可能相同 char[] tmp = s.toCharArray(); Arrays.sort(tmp); String newString = new String(tmp); if (newString.equals(new String(chars))) { if (s.compareTo(str[i]) > 0) { res.set(j, new String(str[i])); break; } } } } } else { res.add(new String(str[i])); } } Collections.sort(res); return res; } public static void main(String[] args) { String[] str = {"emmaldzsvjggzfoda", "skmjhsm", "zjwmkgufsvwrwyvrhk", "am", "vyksgrwwjmwrhzfvuk", "wfszrykvjrmuwhkvgw", "kwrwuwjvksyvhmrzfg", "kom", "gjmqdrzqzjeemxxn", "qqxedgjjmrznmxez", "xxgmjezerjnqmzdq", "vwcmmngdsvzx", "xvmdvwscgnmz", "kpu", "kpu", "a"}; int n = str.length; ArrayList<String> res = new Solution().sortStrings(str, n); for (String s : res) { System.out.println(s); } }}
0 0
- 变位词排序
- 牛客网 | 变位词排序
- 变位词排序
- 变位词排序
- 变位词排序
- 变位词排序
- 变位词排序
- 变位词
- 变位词
- 变位词
- 变位词
- 变位词
- 变位词
- 变位词
- Sorting&Searching 基于变位词的字符串数组排序 @CareerCup
- 程序员面试金典——变位词排序__
- 程序员面试金典(排序与查找):变位词排序(java解法)
- 链表 变位词 anagram
- 指针和引用的区别与联系
- Linux下安装pycharm
- linux高性能服务器编程之同时处理UDP请求和TCP请求的服务器
- Linear Algebra - Lesson 29. 相似矩阵和若尔当形
- mvp模式理解
- 变位词排序
- 转,Oracle中关于处理小数点位数的几个函数,取小数位数,Oracle查询函数
- Linear Algebra - Lesson 30. 奇异值分解
- SATA
- Android之--断点续传原理及实现
- jsp中在<%%>里面获取list
- 结构体的一个高级特性――指定成员的位数
- SQLServer的数据类型
- iOS从零基础到精通就业-C语言入门 7循环语句for