华为oj之字典排序
2015-04-30 14:17
441 查看
描述:
将由英文单词和分隔符组成的字符串按字典排序输出
1)字符说明:文本中只包含下面定义的字符
单词字符:a~z字母,A~Z字母,连字符‘-’(连字符是单词的组成部分)
2)分隔符:
空格:‘ ’
3)格式和单词解析
单词:相邻两个分隔符之间的单词字符组成一个单词。
4)字典顺序定义:
1、单词中字母(包括连字符)比较不区分大小写。两个单词先以第一个字母作为排序的基准,如果第一个字母相同,就用第二个字母为基准,如果第二个字母相同就以第三个字母为基准。依此类推,如
果到某个字母不相同,字母顺序在前的那个单词顺序在前。连字符排在所有字母前面。
2、当一个短单词和一个长单词的开头部分都相同(即短单词是长单词从首字母开始的一部分),短单词顺序在前。
3、所有的单词都按上面定义的顺序排列,就构成了字典顺序。
说明:输入无其它特殊字符,不用考虑。
知识点:
题目来源: 内部整理
练习阶段: 初级
运行时间限制: 无限制
内存限制: 无限制
样例输入:
123 12 1 abcd ABC ab A aa BB ab aC
样例输出:
1 12 123 A aa ab ab ABC abcd aC BB
思路
首先将字符串按照空格分割开,然后利用collections的sort方法,并重写cmparator的compareTo方法,在该方法中,以字符的asccii的大写排序,如果前缀完全一样,输出短的。
代码
通过本练习,熟悉和基本掌握了Colletcions的sort方法,其关键是要重写compareTo方法。另外将String[]装换为list采用Arrays.asList()方法。
将由英文单词和分隔符组成的字符串按字典排序输出
1)字符说明:文本中只包含下面定义的字符
单词字符:a~z字母,A~Z字母,连字符‘-’(连字符是单词的组成部分)
2)分隔符:
空格:‘ ’
3)格式和单词解析
单词:相邻两个分隔符之间的单词字符组成一个单词。
4)字典顺序定义:
1、单词中字母(包括连字符)比较不区分大小写。两个单词先以第一个字母作为排序的基准,如果第一个字母相同,就用第二个字母为基准,如果第二个字母相同就以第三个字母为基准。依此类推,如
果到某个字母不相同,字母顺序在前的那个单词顺序在前。连字符排在所有字母前面。
2、当一个短单词和一个长单词的开头部分都相同(即短单词是长单词从首字母开始的一部分),短单词顺序在前。
3、所有的单词都按上面定义的顺序排列,就构成了字典顺序。
说明:输入无其它特殊字符,不用考虑。
知识点:
题目来源: 内部整理
练习阶段: 初级
运行时间限制: 无限制
内存限制: 无限制
样例输入:
123 12 1 abcd ABC ab A aa BB ab aC
样例输出:
1 12 123 A aa ab ab ABC abcd aC BB
思路
首先将字符串按照空格分割开,然后利用collections的sort方法,并重写cmparator的compareTo方法,在该方法中,以字符的asccii的大写排序,如果前缀完全一样,输出短的。
代码
import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; import java.util.Scanner; public class Main{ public static void main(String[] args) { Scanner sc=new Scanner(System.in); String str=sc.nextLine(); sc.close(); List<String> result=java.util.Arrays.asList(str.split(" ")); Collections.sort(result,new Comparator<String>() { @Override public int compare(String str1, String str2) { int i=0; while(i<str1.length()&&i<str2.length()) { Character c1=Character.toLowerCase(str1.charAt(i)); Character c2=Character.toLowerCase(str2.charAt(i)); if(c1!=c2) { return c1.compareTo(c2); } i++; } return ((Integer)str1.length()).compareTo(str2.length()); } }); for(int i=0;i<result.size()-1;i++) { System.out.print(result.get(i)+" "); } System.out.println(result.get(result.size()-1)); } }
通过本练习,熟悉和基本掌握了Colletcions的sort方法,其关键是要重写compareTo方法。另外将String[]装换为list采用Arrays.asList()方法。
相关文章推荐
- 华为oj中级 字符串排序
- 华为OJ中级题-字符串排序
- 华为OJ 字符串排序
- 华为OJ——输入整型数组和排序标识,对其元素按照升序或降序进行排序
- 华为OJ—字符串排序
- 华为OJ 字符串排序
- 【华为OJ】【052-输入整型数组和排序标识,对其元素按照升序或降序进行排序】
- 【华为 OJ 】成绩排序
- 输入整型数组和排序标识,对其元素按照升序或降序进行排序(华为OJ系列)
- 华为OJ 整数排序 不出现连续数
- 华为OJ中级题-成绩排序
- 【华为 OJ 】字符串排序
- 华为OJ(字符串排序)
- 华为OJ——字符串排序
- 华为OJ--整型数排序
- 华为OJ(字符串排序)
- 华为OJ——字符串排序
- 华为OJ基础第三题 字符快速排序
- 华为oj 字符串排序
- 华为oj之成绩排序