首页 > 代码库 > 2014年去哪儿网笔试题--给定一个整型数组,对这个整型素组排序,使得按序拼接数组各元素得到的值最小。
2014年去哪儿网笔试题--给定一个整型数组,对这个整型素组排序,使得按序拼接数组各元素得到的值最小。
2014年去哪儿网笔试题--给定一个整型数组,对这个整型素组排序,使得按序拼接数组各元素得到的值最小。
我的大致思路是把这个整型数组转换成String数组,然后通过String类的compareTo方法对这个数组进行第一次排序,排序得到的结果恰好是按字典序排序,而字典序又恰好是数字从0-9的顺序,恰好符合这个要求。最后进行检验下,有的可能需要调换下顺序使得数最小。
package com.cn.qunar.test; /** * @author 刘利娟 liulijuan132@gmail.com * @version 创建时间:2014年8月2日 上午7:33:31 类说明: 给定一个整型数组,对这个整数数组排序,使得按序拼接数组各元素得到的值最小。 * 示例:[3,83,8,13,1],被排序之后的数组为[1,13,3,83,8]。 依次拼接得到最小的数1133838。 */ public class IntSort { public static void main(String[] args) { int[] array = new int[] { 3, 83, 8, 101, 10103 }; String[] strings = new String[array.length]; for (int i = 0; i < array.length; i++) { strings[i] = Integer.toString(array[i]); System.out.println(strings[i]); } for (int i = 0; i < strings.length - 1; i++) { for (int j = 0; j < strings.length - i - 1; j++) { if (strings[j].compareTo(strings[j + 1]) > 0) { System.out.println(strings[j] + ">" + strings[j + 1]); String temp = strings[j]; strings[j] = strings[j + 1]; strings[j + 1] = temp; } } } for (int i = 0; i < strings.length; i++) { System.out.println(strings[i]); } for (int i = 0; i < strings.length - 1; i++) { int lengths = (strings[i].length() > strings[i + 1].length()) ? strings[i + 1] .length() : strings[i].length(); System.out.println("长度:" + lengths); for (int j = 0; j < lengths; j++) { if (strings[i].charAt(j) == strings[i + 1].charAt(j)) { int si = Integer.parseInt(strings[i]); int si1 = Integer.parseInt(strings[i+1]); int sim = 1; for(int k = 0; k < strings[i].length(); k++){ sim *= 10; } int si1m = 1; for(int k = 0; k < strings[i+1].length(); k++){ si1m *= 10; } if((si * si1m+si1)>(si1 * sim + si)){ System.out.println((si * si1m+si1)+">"+(si1 * sim + si)); String temp = strings[i]; strings[i] = strings[i+1]; strings[i+1] = temp; } } } } StringBuffer sb = new StringBuffer(); for(int i = 0; i < strings.length; i++){ sb.append(strings[i]); } System.out.println("排序结果:"+sb); } }
虽然效率不是很高= =,但好歹是自己想出来的。已验证该知道答案均不正确。http://zhidao.baidu.com/question/489460060.html
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。