将给定非负整数列表中的数字排列成最大数字的2种方法。例如,给定[50,2,1,9],最大数字为95021。
一、题目简介
编写一个能将给定非负整数列表中的数字排列成最大数字的函数。例如,给定[50,2,1,9],最大数字为95021。
此处以如下数组为例:Integer[] num=new Integer[]{51,9,370,82,4,796};
二、实例代码
1、方法一:
/**
* 1.方法一:判断每个数的长度,通过在后面补0的方式使所有的数位数相等,
* 比较大小排序,得到最大数。
*/
public static void firstMeans(){Integer[] num=new Integer[]{51,9,370,82,4,796};String[] str=new String[num.length];int n=5;//设定待使用数组每个数字最大长度为5位;//长度小于5的数字循环在后面补0,直到长度为5;for(int k=0;k<num.length;k++){str[k]=num[k].toString();while(str[k].length()<n){ str[k]+="0";}}//打印补0后按大小排序结果;System.out.println(Arrays.toString(str));//以冒泡排序的思维对数补0后,长度相同的数组元素进行排序;//排序过程中需要同时交换两个数组中的相对位置;for(int i=0;i<num.length-1;i++){for(int j=i+1;j<num.length;j++){if(Integer.parseInt(str[i])<Integer.parseInt(str[j])){int temp1=num[i];String temp2=str[i];num[i]=num[j];str[i]=str[j];num[j]=temp1;str[j]=temp2;}}}//打印得到最大组合数的数组;System.out.println("方法1:"+Arrays.toString(num));String resulte="";for(int i=0;i<num.length;i++){resulte+=num[i];}System.out.println("最终结果_方法1:"+resulte);
}
2、方法二:
/**
* 2.方法一:两两互相组合比较大小,组合方式大的数放在前面(冒泡排序思维);
*/
public static void secondMeans(){Integer[] num2=new Integer[]{51,9,370,82,4,796};for(int i=0;i<num2.length-1;i++){for(int j=i+1;j<num2.length;j++){//数组中的数转化为字符串两两互相组合,组合结果转换为整型;int x=Integer.parseInt(num2[i].toString()+num2[j].toString());int y=Integer.parseInt(num2[j].toString()+num2[i].toString());//比较组合结果,组合在前的数组合结果大,就把该数交换到前面的位置;if(x<y){int temp=num2[i];num2[i]=num2[j];num2[j]=temp;}}}//打印得到最大组合数的数组;System.out.println("方法2:"+Arrays.toString(num2));String resulte="";for(int i=0;i<num2.length;i++){resulte+=num2[i];}System.out.println("最终结果_方法2:"+resulte);
}
三、打印结果
//3.调用方法输出结果;
public static void main(String[] args) {firstMeans();secondMeans();
}
[51000, 90000, 37000, 82000, 40000, 79600]
方法1:[9, 82, 796, 51, 4, 370]
最终结果_方法1:982796514370
方法2:[9, 82, 796, 51, 4, 370]
最终结果_方法2:982796514370
四、总结
方法一:给定数组元素有最大位数的限制,超过设定的位数最终结果将会出错,而且该方法循环使用次数过多,效率低下。
方法二:效率较高,也是网上多数大神使用的方法。
将给定非负整数列表中的数字排列成最大数字的2种方法。例如,给定[50,2,1,9],最大数字为95021。相关推荐
- 编写一个能将给定非负整数列表中的数字排列成最大数字的函数
编写一个能将给定非负整数列表中的数字排列成最大数字的函数.例如,给定[50,2,1,9],最大数字为95021. public class TestFindMaxNum { /** * @param ...
- 删除列表中的空格(其他元素)的4种方法
''' 全部删除列表里的某一个元素: 但是当采用for, while遍历时,删除 当前元素后,列表的长度发生变化,会导致被删掉元素的下一个元素就会 被跳过,这样会造成遍历不彻底,从而可能导致删除不彻底 ...
- python中如何求列表中的和_python实现求解列表中元素的排列和组合
求解列表中元素的排列和组合问题这个问题之前就遇到过几次没有太留意,最近在做题的时候遇上挺多的排列组合问题的,想来有必要温习一下了,今天花点时间写一下,之前都是手工写的,后来知道可以直接使用python ...
- python中列表中的字符串转换成数字
python中列表中的字符串转换成数字 调整实验时,发现某个嵌套列表的字典中需要把列表中的字符串改成数字,不能直接强转,需要以下代码实现 m_dict_G = {}for key in md_dict ...
- word文档怎么给数字加千分符_word实用技巧:如何为数字添加千分符的3种方法
我们在用Word做各类文书.标书.策划类时,有时会在文档中书写多位数的金额数据,如下图所示的调薪通知: 看到上方薪资单中的信息我是拒绝的,一般情况下,金额位数比较多时,应该设置添加千分符.但文档中12 ...
- python中none算变量吗_在python中对变量判断是否为None的三种方法总结
三种主要的写法有: 第一种:if X is None; 第二种:if not X: 当X为None, False, 空字符串"", 0, 空列表[], 空字典{}, 空元组()这 ...
- Python中记住过去(模型状态)的五种方法
在Python中记住过去(模型状态)的五种方法 从封闭函数和迭代器到状态机Python库 有人说... "那些不能记住过去的人,注定要重复它".G. Santayana, 1905 ...
- java中char类型转换成int类型的两种方法
java中char类型转换成int类型的两种方法 方法一: 第一种利用Integer包装类的方法Integer.parseInt Copychar ch = '9'; if (Character.is ...
- java7 javascript引擎_Java7中脚本引擎的一般用法,共三种方法获得JavaScript引擎:名称、文件扩展名、MIME类型 | 学步园...
package com.sino.java7; import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; i ...
最新文章
- 将标签one-hot化的方法
- IBM迎来新任CEO,又一美国科技巨头被印度裔掌舵
- time_t和字符串间的转化
- 怎么求人眼图像中的噪声
- 知乎高赞:985计算机视觉毕业后找不到工作怎么办?怒刷leetcode,还是另寻他路?
- MFC提供的集合类CStringArray类和CPtrArray类
- Kubernetes搭建可扩展的微服务系统
- 坊间八卦 | 关于 Oracle 中国区裁员的是是非非
- AKKA Router路由
- if单分支,二分支,多分支
- android 动态添加listview,动态向listView Android添加元素
- iOS开发环境:XCode
- AP6212认证_自适应测试
- html金额自动换算成大写,JavaScript实现将人民币小写金额自动转换成大写的方法...
- Sequel pro 连接mysql 报MySQL said: Authentication plugin 'caching_sha2_password' cannot be loaded...
- 自动化玩腾讯微证券领长牛python实现---学习记录
- 垃圾分类的正确姿势?用 OpenCV 人工智能图像识别技术来进行
- android 仿微信demo————微信发现界面实现
- Plants vs. Zombies(二分)
- c语言路径搜索,c语言程序(单元路劲及多元路径的搜索)
热门文章
- Pr——保存裁剪过后的视频(去除黑边)
- Thinking in System Approach
- linux如何使用tinyproxy搭建代理服务器
- python怎么将字符串变成int,如何在Python中将字符串转换为int?
- Qt/C++编写安防视频监控系统20-录像机管理
- 外国程序员也愁:快四十岁了,以后该怎么办?
- 入行AI,你需要一本Python机器学习入门 1
- Oracle数据库性能分析管理-IO分析
- 路飞学城项目-前期准备
- [windows][操作系统]复制文件夹到桌面经常到跑左上角导致桌面图标位置错乱