把数组排成最小的数
来源:互联网 发布:qq视频变脸软件 编辑:程序博客网 时间:2024/06/03 20:53
题目描述
输入一个正整数数组,将它们连接起来排成一个数,输出能排出的所有数字中最小的一个。
如给定数组:{2,1}
则排出的最小数字为:12
输入
输入为字符串,其格式为“{数字,数字,……}”
输出
排出的最小数字
样例输入
{2,1}
样例输出
12
提示
NO
地区
成都研究所
产品线
公共
阶段
招聘
难度
2级
方法一:按照字符串大小的比较规则
public String getMinDigit(String input){String[] inArr=input.split(",");int len=inArr.length;Arrays.sort(inArr, new Comparator<String>(){@Overridepublic int compare(String o1, String o2) {return (o1+o2).compareTo(o2+o1);}});StringBuilder sb=new StringBuilder();for(int i=0;i<len;i++){sb.append(inArr[i]);}return sb.toString();}
方法二:全排列
public String getMinDigitByArrange(String input){String[] strArr=input.split(",");int len=strArr.length;int[] inArr=new int[len];for(int i=0;i<len;i++){inArr[i]=Integer.valueOf(strArr[i]);}List<String> list=new ArrayList<String>();arrange(inArr,0,len,list); String min=list.get(0);for(String s:list){if(s.compareTo(min)<0)min=s;}return min;}public void arrange(int[] inArr,int start,int len,List<String> list){if(start==len-1){StringBuilder sb=new StringBuilder();for(int i=0;i<inArr.length;i++){sb.append(inArr[i]);}list.add(sb.toString());}else{for(int i=start;i<len;i++){swap(inArr,start,i);arrange(inArr,start+1,len,list);swap(inArr,start,i);}}} public void swap(int[] inArr, int i, int j) {int temp=inArr[i];inArr[i]=inArr[j];inArr[j]=temp;}
- 把数组排成最小的数--总结
- 把数组排成最小的数
- 把数组排成最小的数
- 把数组排成最小的数
- 把数组排成最小的数--总结
- 把数组排成最小的数--总结
- 把数组排成最小的数
- 把数组排成最小的数
- 把数组排成最小的数
- 把数组排成最小的数
- 把数组排成最小的数
- 把数组排成最小的数
- 把数组排成最小的数
- 把数组排成最小的数
- 把数组排成最小的数
- 把数组排成最小的数
- 把数组排成最小的数
- 把数组排成最小的数
- 不使用webview,用手机浏览器的android app
- 《程序员》 -- 数学魔术人人皆会变
- 【算法】散列表及散列函数的java简单实现
- Android及Robotium学习总结【环境变量,真机调试及根据id模拟按键】
- GAE
- 把数组排成最小的数
- Struts2图片文件上传,判断图片格式和图片大小
- MySQL备份方案-->(利用mysqldump以及binlog二进制日志)
- 使用Intent 将底层栈里所有的activity都清理掉
- 使用X-UA-Compatible来设置IE8兼容模式
- 解读Linux内核的Oops
- 微光摄影技巧(一)(附图:版中版公司图片)
- 开发网站需要注意的安全问题
- Android端与服务端基于TCP/IP协议的Socket通讯