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

描述:

已知字母序列【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 stub
		String[] 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]);
	}

}


你可能感兴趣的:(笔试题,校园招聘,成都,去哪儿网)