您的位置:首页 > 其它

去哪儿笔试题(2012年成都站)- 马上要笔试了,做做历年的题。

2013-10-09 23:48 267 查看
摘要:马上要笔试,做做历年的题目把= =1

题目:

* 2. 已知字母序列【d, g, e, c, f, b, o, a】,请实现一个函数针对输入的一组字符串 input[] = {"bed", "dog",
* "dear", "eye"},按照字母顺序排序并打印。
*
* 本例的输出顺序为:dear, dog, eye, bed。

/**
* 2. 已知字母序列【d, g, e, c, f, b, o, a】,请实现一个函数针对输入的一组字符串 input[] = {"bed", "dog",
* "dear", "eye"},按照字母顺序排序并打印。
*
* 本例的输出顺序为:dear, dog, eye, bed。
*
* @author Administrator
*
*/
public class Q2 {
String[] table = { "d", "g", "e", "c", "f", "b", "o", "a" };

public void sort(String[] input) {
if (input.length == 1) {
System.out.println(input);
}

for (int i = 1; i < input.length; i++) {
// 插入排序
for (int j = i - 1; j > -1; j--) {
if (isHigher(input[i], input[j]) == 1
|| isHigher(input[i], input[j]) == 0) {
continue;
}
if (isHigher(input[i], input[j]) == -1) {
// 交换
String temp = input[i];
input[i] = input[j];
input[j] = temp;
}
}

}
for (int i = 0; i < input.length; i++) {
System.out.println(input[i]);
}

}

public int isHigher(String s1, String s2) {
int length = s1.length() < s2.length() ? s1.length() : s2.length();
for (int i = 0; i < length; i++) {

int index1 = getIndex(String.valueOf(s1.charAt(i)));
int index2 = getIndex(String.valueOf(s2.charAt(i)));
if (index1 > index2) {
return 1;
} else if (index1 < index2) {
return -1;
} else {
continue;
}

}
return 0;

}

public int getIndex(String s) {
for (int i = 0; i < table.length; i++) {
if (table[i].equalsIgnoreCase(s)) {
return i;
}
}
return -1;

}

public static void main(String[] args) {
Q2 q = new Q2();
String[] input = { "bed", "dog", "dear", "eye" };
q.sort(input);

}
}


  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: