用几个数字任意组合成最大数
2017-08-25 11:21
232 查看
例如12,34,56,56,672
组合成最大数为67256563412
原题:
Given a list of non negative integers, arrange them such that they form the largest number.
For example, given
is
Note: The result may be very large, so you need to return a string instead of an integer.
class Solution {
public String largestNumber(int[] nums) {
String[] input = new String[nums.length];
for(int i = 0;i<nums.length;i++){
input[i] = String.valueOf(nums[i]);
}
Arrays.sort(input, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {//覆写元素的比较规则
for(int i = 0; i < o1.length() + o2.length(); i++) {
char p1 = o1.charAt(i % o1.length());
char p2 = o2.charAt(i % o2.length());
if(p1 != p2) return p2 - p1;
}
return 0;
}
});
String result = "";
for(String s : input) {
result += s;
}
int a = 0;
for(int i = 0;i<result.length();i++){
if(result.charAt(i) == '0'){
a = i+1;
}
if(result.charAt(i) != '0'){
return result.substring(a,result.length());
}
}
return "0";
}
}
组合成最大数为67256563412
原题:
Given a list of non negative integers, arrange them such that they form the largest number.
For example, given
[3, 30, 34, 5, 9], the largest formed number
is
9534330.
Note: The result may be very large, so you need to return a string instead of an integer.
class Solution {
public String largestNumber(int[] nums) {
String[] input = new String[nums.length];
for(int i = 0;i<nums.length;i++){
input[i] = String.valueOf(nums[i]);
}
Arrays.sort(input, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {//覆写元素的比较规则
for(int i = 0; i < o1.length() + o2.length(); i++) {
char p1 = o1.charAt(i % o1.length());
char p2 = o2.charAt(i % o2.length());
if(p1 != p2) return p2 - p1;
}
return 0;
}
});
String result = "";
for(String s : input) {
result += s;
}
int a = 0;
for(int i = 0;i<result.length();i++){
if(result.charAt(i) == '0'){
a = i+1;
}
if(result.charAt(i) != '0'){
return result.substring(a,result.length());
}
}
return "0";
}
}
相关文章推荐
- 如何得到指定数字中任意几个数字的组合
- 算法:给定多个数字,把多个数字任意组合,选出组合后最大的数
- 如何得到指定数字中任意几个数字的组合
- 【Java中 任意几个数字获取其所有的排列组合】
- /*C++任意输入一个整数,再把它的各位数字重新组合一个新的整数,使其值最大*/
- 【Java中 任意几个数字获取其所有的排列组合】
- 任意数字、字符序列,输出它们所有的排列组合
- 网易实习,任意n个数组合求最大
- 输入几个正整数,求怎么组合这几个正整数的值最大(快排+比较器)
- [转]组合算法(从几个数字中选几个然后组合)
- 求任意10个数字中最大的一个数字
- 给定一个数组,当中有正负数,求当中的一段“子数组”(即任意长度,连续的数字), 使得这个“子数组”的和是所有“子数组”和中最大的
- 将[1,n^2]区间内n^2个数字分别填充到n*n的矩阵里,要求任意两个相邻的数字的和,它们的最大值最小是多少?
- 变量-变量名只能是字母、数字或者下划线的任意组合 变量名的第一个字符不能是数字
- 【练习】从一组数字中找出最大的几个,用堆完成
- 任意一个5位数,比如:34256,把它的各位数字打乱,重新排列,可以得到一个最大的数:65432, 一个最小的数23456。求这两个数字的差,得:41976,把这个数字再次重复上述过程(如果不足5位,
- leetcode_[python/C++] 179. Largest Number(数字组合成最大数)
- 输入两个整数n和m, 从数列1,2,...,n中任意选择几个数,使其和等于m, 要求编写程序输出所有的组合
- 从一个数组里面获取最大的几个数字代码实现
- 随机给定10个小于10的数字(出现的数字可能重复),从其中取出3个各不相同的数字可组合出多个不同的3位数,请输出这些3位数中最大的那个3位数