我的问题
我有以下规格:
Write a function that given a list of non negative integers, arranges them such that they form the largest possible number. For example, given [50, 2, 1, 9], the largest formed number is 95021.
我的结果
我对这个问题的解决方案不屑一顾,但是失败了.例如,给定输入[90,91,89,999],此代码的结果为[909199989],但应为[999919089].
我的算法的描述
简而言之,它与基数排序相反.
脚步
1)根据值创建存储桶.
2)每个存储桶都有元素列表.
3)对每个存储桶中的列表进行排序.
4)以相反的顺序显示结果.
我的密码
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.ListIterator;
import java.util.Map;
import java.util.Scanner;
public class ReverseMaxPossibleNumber {
public static void main(String[] args) {
int[] a = { 50, 2, 1, 9 };
int len = a.length;
String ch = "";
List>> list_map = new ArrayList>>();
Map> map = new HashMap>();
for (int i = 0; i < len; i++) {
ch = "" + a[i];
String str = "";
ArrayList arraylist = new ArrayList();
for (int j = 0; j < len; j++) {
str = "" + a[j];
if (ch.charAt(0) == str.charAt(0)) {
arraylist.add(str);
Collections.sort(arraylist);
map.put("" + ch.charAt(0), arraylist);
}
}
}
list_map.add(map);
String str = "";
for (String key : map.keySet()) {
str = map.get(key) + str;
}
str = str.replaceAll("\D+", "");
System.out.println(str);
}
}