去哪儿网校园招聘笔试题(成都)--之一

来源:互联网 发布:内存泄漏怎么解决java 编辑:程序博客网 时间:2024/04/29 04:54

描述:

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

本例的输出顺序为:dear, dog, eye, bed。

思路:

将字母序列所代表的顺序值存入map中,然后再实现排序接口comparator中的compare方法,在compare方法中实现对字符串的排序。

代码:

import java.util.Comparator;import java.util.Arrays;import java.util.HashMap;import java.util.Map;public class StringTest implements Comparator<String>{static char charOrder[] = { 'd', 'g', 'e', 'c', 'f', 'b', 'o', 'a' };Map<Character, Integer>mpp=new HashMap<Character, Integer>();public StringTest(){for(int i=0;i<charOrder.length;i++)mpp.put(charOrder[i],i); }public int compare(String s1,String s2){int len1=s1.length(),len2=s2.length();int min=len1<len2?len1:len2;int num=0;for(int i=0;i<min;i++){num=mpp.get(s1.charAt(i))-mpp.get(s2.charAt(i));if(num!=0)return num;}if(len1!=len2)return len1-len2;return 0;}/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubString[] strArray = new String[] { "bed", "dog", "dear", "eye" };Arrays.sort(strArray, new StringTest());for(int i=0;i<strArray.length;i++)System.out.println(strArray[i]);}}


0 0