ch1_6_1求解两种排序方法问题
考拉有n个字符串字符串,任意两个字符串长度都是不同的。
考拉最近学习到有两种字符串的排序方法:
1.根据字符串的字典序排序。例如:
"car" < "carriage" < "cats" < "doggies < "koala"
2.根据字符串的长度排序。例如:
"car" < "cats" < "koala" < "doggies" < "carriage"
考拉想知道自己的这些字符串排列顺序是否满足这两种排序方法,考拉要忙着吃树叶,
所以需要你来帮忙验证。
输入描述:
输入第一行为字符串个数n(n ≤ 100) 接下来的n行,
每行一个字符串,字符串长度均小于100,均由小写字母组成
输出描述:
如果这些字符串是根据字典序排列而不是根据长度排列
输出"islexicalorder",
如果根据长度排列而不是字典序排列
输出"lengths",
如果两种方式都符合输出"both",
否则输出"none"
输入例子:
3
a
aa
bbb
输出例子:
both
import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;
public class ch1_6_1求解两种排序方法问题 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in=new Scanner(System.in);
int n=in.nextInt();
String s[]=new String[n];
for(int i=0;i<n;i++) {
s[i]=in.next();
}
boolean so1=cmp(s,sd(s));
boolean so2=cmp(s,sl(s));
if(so1&&so2)
System.out.println("both");
else if(so1)
System.out.println("islexicalorder");
else if(so2)
System.out.println("lengths");
else System.out.println("none");
}
private static String [] sl(String[] s) {
Arrays.sort(s,0,s.length,new Comparator<String>(){
public int compare(String a,String b){
return a.length()-b.length();
}});
return s;
}
private static boolean cmp(String[] s, String sd[]) {
// TODO Auto-generated method stub
for(int i=0;i<s.length;i++)
if(s[i].equals(sd[i])==false)
return false;
return true;
}
private static String [] sd(String[] s) {
// TODO Auto-generated method stub
Arrays.sort(s);
return s;
}
}