对n以内的数字进行字典序排序(java)
来源:互联网 发布:sql去掉重复字段 编辑:程序博客网 时间:2024/06/09 19:31
刷题时,遇到的问题,目前是想到了两种方式:一种是重写比较器;另一种是使用字符串的表达方式,然后进行自然排序。
下面给出例子。
1、改写比较器方式
package schooloffer17;import java.util.*;/** * @Author: cxh * @CreateTime: 17/11/21 15:28 * @ProjectName: JavaBaseTest * <字典排序></> */public class DictionaryOrder { public static void main(String[] args) { int n,m; Scanner scanner=new Scanner(System.in); while (scanner.hasNextInt()){ n=scanner.nextInt();//n个数字排序 ArrayList<Integer> list=new ArrayList<Integer>(); for(int i=0;i<n;i++) list.add(i+1); Collections.sort(list, new Comparator<Integer>() { @Override public int compare(Integer o1, Integer o2) { String str1=String.valueOf(o1); String str2=String.valueOf(o2); if(str1.length()==str2.length()){ return (int)(o1-o2);//长度相同,升序 }else{ for(int i=0;i<Math.min(str1.length(),str2.length());i++){ if(str1.charAt(i)!=str2.charAt(i)){ return str1.charAt(i)-str2.charAt(i); } } return str1.length()-str2.length(); } } }); //输出list Iterator<Integer> iterator=list.iterator(); while (iterator.hasNext()){ System.out.println(iterator.next()+","); } } }}输入:15
输出结果:
1,10,11,12,13,14,15,2,3,4,5,6,7,8,9,
2、自然排序方式
package schooloffer17;import java.util.*;/** * @Author: cxh * @CreateTime: 17/11/21 15:28 * @ProjectName: JavaBaseTest * <字典排序></> */public class DictionaryOrder { public static void main(String[] args) { int n,m; Scanner scanner=new Scanner(System.in); while (scanner.hasNextInt()){ n=scanner.nextInt();//n个数字排序 ArrayList<String> list=new ArrayList<String>(); for(int i=0;i<n;i++) list.add(String.valueOf(i+1)); Collections.sort(list); //输出list Iterator<String> iterator=list.iterator(); while (iterator.hasNext()){ System.out.println(iterator.next()+","); } } }}
输入:15
输出结果:
1,10,11,12,13,14,15,2,3,4,5,6,7,8,9,
3、其实改写比较器是常写的,自己比较熟悉,这次是对String类型的集合进行自然排序的第一次使用,原来String类型的集合自然排序是字典排序形式,这可能以后在刷题时候可以用到的一个方式呢。同时测试了数组类型为String,自然排序也是字典排序。只是写法两个不同而已,数组就是Arrays.sort(),而list集合是Collections.sort()。
阅读全文
0 0
- 对n以内的数字进行字典序排序(java)
- 对数组里的字典进行数字字母排序
- 如何对Map进行字典排序Java
- java经典算法_025对随机生成的100以内的10个数进行排序
- 对字典进行排序
- java 实现对数字进行排序
- 根据字典的值大小对字典进行排序
- 对数字进行排序
- python_对字典进行排序
- [python]对字典进行排序
- python 对字典进行排序
- 对字典values进行排序
- 字典序排序n!
- java中对map的字典序排序
- iOS 对字典的key,value进行排序
- iOS中对字典的key进行排序
- Python高效编程-对字典的值进行排序
- 对N个数进行排序
- CGAL编译DEMO Qt5Script_DIR NOT FOUND问题
- 73.笔记 MySQL学习——C编写MySQL程序六交互式语句执行
- Linux下连接oracle,出现cx_Oracle.DatabaseError: DPI-1047: 64-bit Oracle Client library cannot be loaded: “
- PHP 类型判断函数
- 【Scikit-Learn 中文文档】使用 scikit-learn 介绍机器学习 | ApacheCN
- 对n以内的数字进行字典序排序(java)
- 74.笔记 MySQL学习——C编写MySQL程序七支持SSL
- 【Scikit-Learn 中文文档】广义线性模型
- 标准模板库 STL-2 编程题#1(Coursera 程序设计与算法 专项课程3 C++程序设计 郭炜、刘家瑛;vector(sort)中重载 <)
- python文件的replace替换
- CCF 201512-2 消除类游戏
- 卷积神经网络
- 75.笔记 MySQL学习——C编写MySQL程序八一次执行多条SQL
- 基于PHPexecl类生成复杂的报表表头示例