例题:已知字母序列【d, g, e, c, f, b, o, a】,请实现一个函数针对输入的一组字符串 input[] = {"bed", "dog", "dear", "eye"},按照字母顺序排序并打印。本例的输出顺序为:dear, dog, eye, bed。
代码一:
public void test() {
String[] input = {"bed", "dog", "dear", "eye"};
for(int i=0; i<input.length-1; i++)
for(int j=0; j<input.length-i-1;j++){
if(compare(input[j], input[j+1])){
String temp = input[j];
input[j] = input[j+1];
input[j+1] = temp;
}
}
for(String str : input){
System.out.println(str);
}
}
public boolean compare(String a, String b){
int len1 = a.length();
int len2 = b.length();
boolean flag = false;
for(int i=0; i<(len1<len2?len1:len2); i++){
if(toPriority(a.charAt(i))<toPriority(b.charAt(i))){
flag = true;
break;
}else if(toPriority(a.charAt(i))>toPriority(b.charAt(i))){
break;
}else{
continue;
}
}
return flag;
}
public int toPriority(char c){
switch(c){
case 'd': return 8;
case 'g': return 7;
case 'e': return 6;
case 'c': return 5;
case 'f': return 4;
case 'b': return 3;
case 'o': return 2;
case 'a': return 1;
default:return 0;
}
}
代码二:
public class test {
public static void main(String[] args){
String[] inputs = {"bed", "dog","dear", "eye"};
final Map<String,Integer> map = new HashMap<String, Integer>();
map.put("d", -8);
map.put("g", -7);
map.put("e", -6);
map.put("c", -5);
map.put("f", -4);
map.put("b", -3);
map.put("o", -2);
map.put("a", -1);
Arrays.sort(inputs, new Comparator<String>(){
public int compare(String s1, String s2) {
//d, g, e, c, f, b, o, a
for (int i = 0; i < s1.length() && i<s2.length(); i++) {
Integer s1Int = map.get(s1.charAt(i)+"");
int a = s1Int!=null? s1Int : s1.charAt(i);
Integer s2Int = map.get(s2.charAt(i)+"");
int b = s2Int!=null? s2Int : s2.charAt(i);
if(a==b){
continue;
}else{
return a-b;
}
}
return s1.length()-s2.length();
}
});
System.out.println(Arrays.toString(inputs));
}
}