码迷,mamicode.com
首页 > 编程语言 > 详细

Lintcode算法

时间:2018-06-11 13:48:44      阅读:173      评论:0      收藏:0      [点我收藏+]

标签:har   ret   pareto   font   算法   .com   string   substring   一个   

题目:

给出一组非负整数,重新排列他们的顺序把他们组成一个最大的整数。

样例

给出 [1, 20, 23, 4, 8],返回组合最大的整数应为8423201

思路:直接交换两个数,然后判断交换之后的大小,并根据交换之后的结果,对数组进行排序,使其从数组的开始到数组的结束,组成的数字的最大。另外因为考虑到,可能会出现数据出现溢出的现象,需要先把整数的数组转化为字符串类型的数组。例如:对于2和23,谁应该排在前边,那么我们就对223和232进行字符串比大小,将组合成结果大的数字的23放在2的前面。

class Solution {
    /**
     * @param nums: A list of non negative integers
     * @return: A string
     */
    public String largestNumber(int[] nums) {
        // write your code here
    	String[] s=new String[nums.length];
    	for(int i=0;i<nums.length;++i){
    		s[i]=Integer.toString(i);
    	}
    	//对字符串数组进行排序
    	Arrays.sort(s,new Comparator<String>(){

			@Override
			public int compare(String o1, String o2) {
				//升序是前者减去后者,降序是后者减去前者。因为排序规则,就是结果就是将数组重新排序,能够从头到尾,实现最大值的问题,所以采用降序
				return (o2+o1).compareTo(o1+o2);
				
			}
    	});
    	StringBuffer buf=new StringBuffer();
    	for(String temp:s){
    		buf.append(temp);
    	}
    	int index=0;
    	String string = buf.toString();
    	while(index<string.length()&&string.charAt(index)==‘0‘){
    		index++;
    	}
    	if(string.length()==0) return "0";
    	return buf.substring(index);
       
    }
        
    
}

  

 

 

Lintcode算法

标签:har   ret   pareto   font   算法   .com   string   substring   一个   

原文地址:https://www.cnblogs.com/zzu-zmh/p/9166256.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!