编写一个能将给定非负整数列表中的数字排列成最大数字的函数
编写一个能将给定非负整数列表中的数字排列成最大数字的函数。例如,给定[50,2,1,9],最大数字为95021。
public class TestFindMaxNum {
/**
* @param args
* 编写一个能将给定非负整数列表中的数字排列成最大数字的函数。例如,给定[50,2,1,9],最大数字为95021。
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] array = {8,889,89,88889};
findtempNum(array);
}
//获取最大整数
public static String findtempNum (int[] a){
int length = a.length;
for(int j=0;j<length-1;j++){
for(int i=j+1;i<length;i++){
if(firstOfInt(a[j])<firstOfInt(a[i])){
int temp = a[i];
a[i] = a[j];
a[j] = temp;
}else if(firstOfInt(a[j])==firstOfInt(a[i])){
if(intLength(a[j])==intLength(a[i])){
if(a[j]<a[i]){
int temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}else{
int x = intLength(a[j]);
int y = intLength(a[i]);
int min = x>y?y:x;
int max = x>y?x:y;
if(partOfInt(a[j], min)<partOfInt(a[i], min)){
int temp = a[i];
a[i] = a[j];
a[j] = temp;
}else{
if(x>y){
int temp1 = minToMax(a[i], x);
if(a[j]<temp1){
int temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}else{
int temp1 = minToMax(a[j], y);
if(temp1<a[i]){
int temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
}
}
}
}
String s = "";
for(int i=0;i<length;i++){
s += String.valueOf(a[i]);
}
System.out.println("数组组成的最大整数是:"+s);
return s;
}
//计算整数长度
public static int intLength(int i){
return String.valueOf(i).length();
}
//计算整数第一位数(取最高位)
public static int firstOfInt(int i){
String s = String.valueOf(i);
s = s.substring(0,1);
return Integer.parseInt(s);
}
//取整数的一部分(从高到低)
public static int partOfInt(int i,int min){
String s = String.valueOf(i);
s = s.substring(0,min);
return Integer.parseInt(s);
}
//将位数低的整数拼成和位数高的一样,后面加首位
public static int minToMax(int i,int max){
String s = String.valueOf(i);
String str = s.substring(0, 1);
for(int j =s.length();j<max;j++){
s +=str;
}
return Integer.parseInt(s);
}
}
希望大家批评指正,看是否有错误。自己简单测试了。
编写一个能将给定非负整数列表中的数字排列成最大数字的函数相关推荐
- 将给定非负整数列表中的数字排列成最大数字的2种方法。例如,给定[50,2,1,9],最大数字为95021。
一.题目简介 编写一个能将给定非负整数列表中的数字排列成最大数字的函数.例如,给定[50,2,1,9],最大数字为95021. 此处以如下数组为例:Integer[] num=new Integer[ ...
- 数据结构第5章例题 若矩阵Am×n中存在某个元素aij满足:aij是第i行中的最小值且是第j列中的最大值,则称该元素为矩阵A的一个鞍点。试编写一个算法,找出A中的所有鞍点。
[例5.1] 若矩阵Am×n中存在某个元素aij满足:aij是第i行中的最小值且是第j列中的最大值,则称该元素为矩阵A的一个鞍点.试编写一个算法,找出A中的所有鞍点. 算法如下: void saddl ...
- 请编写一个程序,请将字符串中所有字母全部向后移一位,最后一个字母放在字符串的开头,最后将新的字符串输出。
请编写一个程序,请将字符串中所有字母全部向后移一位,最后一个字母放在字符串的开头,最后将新的字符串输出. ran = [] result = "" old_str = input( ...
- 请编写一个程序,用于统计字符串中每个字母的出现次数(字母忽略大小写),统计出结果后,请按照{'a':3,'b':2}的格式输出。
请编写一个程序,用于统计字符串中每个字母的出现次数(字母忽略大小写),统计出结果后,请按照{'a':3,'b':2}的格式输出. ras = [] mystr = input("请输入一个全 ...
- 编写一个Java程序,在程序中包含一个Employee类,Employee类包含name、age、salary三个成员变量
编写一个Java程序,在程序中包含一个Employee类,Employee类包含name.age.salary三个成员变量,Employee类中有4个构造方法,分别为无参的.带一个参数用来对name属 ...
- java-commen判断一个数据是否存在于列表中
/** * 判断一个数据是否存在于列表中 * * @param list * @param str * @return */ public static boolean isExist(List l ...
- 假设二叉树采用二叉链存储结构,编写一个算法,求出二叉树中的叶子结点数,并设计主函数调用上述算法。
假设二叉树采用二叉链存储结构,编写一个算法,求出二叉树中的叶子结点数,并设计主函数调用上述算法. #include<iostream>//蓝多多算法实验五:二叉树的应用(二) #inclu ...
- 在Linux环境下用C语言编写一个乘法程序mult,从命令行接收两个数字,然后输出其乘积;再用C语言编写一个exec1程序,在程序中使用execvp调用mult程序计算5与10的乘积。
在Linux环境下用C语言编写一个乘法程序mult,从命令行接收两个数字,然后输出其乘积:再用C语言编写一个exec1程序,在程序中使用execvp调用mult程序计算5与10的乘积. 1.mult. ...
- java编写salary函数_编写一个Java程序,在程序中包含一个Employee类,Employee类包含name、age、salary三个成员变量...
编写一个Java程序,在程序中包含一个Employee类,Employee类包含name.age.salary三个成员变量,Employee类中有4个构造方法,分别为无参的.带一个参数用来对name属 ...
最新文章
- glove 安装错误
- BF法-字符模式匹配
- python桌面图标被删了_Python实现图标锁定到Windows任务栏或删除图标
- 微信小程序开发必看,《使用 .NET Core + DevOps 开发微信跨平台应用》,苏州.NET俱乐部课程分享...
- Java实现计算景区门票GUI版(入门)
- xampp apache无法启动的解决方法
- 如何在网页中弹出的模式窗口,就像C/S中的SHOWMODAL类型窗口
- 计算机ip 地址异常,电脑显示IP地址错误怎么办|电脑无法上网提示IP地址错误的解决方法...
- 一根竹子,4天的生长过程
- html 加爱心符号,爱心符号大全
- Java实现读Chuck数据
- socket接口调用 java_Java中socket接口调用(示例代码)
- .cast( )函数的使用
- ssas连接oracle性能,Analysis Services(SSAS) 性能优化
- K8S CNI及各CNI网络解决方案简述
- 营销案例“真假美猴王”干倒5年老店
- MSP430F5529库函数——模数转换模块(ADC12)软件触发
- 随机森林提取Landsat8水体的样本制作
- HTML5七夕情人节表白网页制作【绘制冬季下雪3D相册】HTML+CSS+JavaScript html生日快乐祝福网页制作
- matlab二阶节的系数,如何利用matlab求解矩阵系数的二阶微分方程