版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/mushao999/article/details/45394317
描述:
将由英文单词和分隔符组成的字符串按字典排序输出
1)字符说明:文本中只包含下面定义的字符
单词字符:a~z字母,A~Z字母,连字符‘-’(连字符是单词的组成部分)
2)分隔符:
空格:‘ ’
3)格式和单词解析
单词:相邻两个分隔符之间的单词字符组成一个单词。
4)字典顺序定义:
1、单词中字母(包括连字符)比较不区分大小写。两个单词先以第一个字母作为排序的基准,如果第一个字母相同,就用第二个字母为基准,如果第二个字母相同就以第三个字母为基准。依此类推,如
果到某个字母不相同,字母顺序在前的那个单词顺序在前。连字符排在所有字母前面。
2、当一个短单词和一个长单词的开头部分都相同(即短单词是长单词从首字母开始的一部分),短单词顺序在前。
3、所有的单词都按上面定义的顺序排列,就构成了字典顺序。
说明:输入无其它特殊字符,不用考虑。
知识点:
题目来源: 内部整理
练习阶段: 初级
运行时间限制: 无限制
内存限制: 无限制
123 12 1 abcd ABC ab A aa BB ab aC
样例输出:
将由英文单词和分隔符组成的字符串按字典排序输出
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()方法。