[面试题11]把数组排成最小的数
2016-01-28 15:49
281 查看
输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
/**
* 输入一个正整数数组,把数组里所有数字拼接起来排成一个数, 打印能拼接出的所有数字中最小的一个。
* 例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
*
* @param n
* @return
*/
public String PrintMinNumber(int[] numbers) {
if (numbers == null || numbers.length == 0) {
return "";
}
String[] num2str = new String[numbers.length];
for (int i = 0; i < numbers.length; i++) {
num2str[i] = String.valueOf(numbers[i]);
}
for(int i = 0;i<numbers.length;i++){
for(int j=0;j<numbers.length-1-i;j++){
if((num2str[j]+num2str[j+1]).compareTo(num2str[j+1]+num2str[j])>0){
String temp = num2str[j];
num2str[j] = num2str[j+1];
num2str[j+1] = temp;
}
}
}
String rs = "";
for(String s:num2str){
rs+=s;
}
return rs;
}
/**
* 输入一个正整数数组,把数组里所有数字拼接起来排成一个数, 打印能拼接出的所有数字中最小的一个。
* 例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
*
* @param n
* @return
*/
public String PrintMinNumber(int[] numbers) {
if (numbers == null || numbers.length == 0) {
return "";
}
String[] num2str = new String[numbers.length];
for (int i = 0; i < numbers.length; i++) {
num2str[i] = String.valueOf(numbers[i]);
}
for(int i = 0;i<numbers.length;i++){
for(int j=0;j<numbers.length-1-i;j++){
if((num2str[j]+num2str[j+1]).compareTo(num2str[j+1]+num2str[j])>0){
String temp = num2str[j];
num2str[j] = num2str[j+1];
num2str[j+1] = temp;
}
}
}
String rs = "";
for(String s:num2str){
rs+=s;
}
return rs;
}
相关文章推荐
- 有哪些老鸟程序员知道而新手不知道的小技巧?自我感受
- 程序员的各种表情
- 面试笔试杂项积累-leetcode 16-20
- 程序员鼓励师?然并卵|原创干货
- 过来人经验!聊聊前端工程师的职业规划——从菜鸟到大牛
- 程序员们的那些神表情,有木有击中你^_^
- Android面试题(1)
- 【同行说技术】Android程序员从小白到大神必读资料汇总(三)
- 有趣的面试题
- [面试题10]1-n中1的个数
- 程序员自我提高的几点建议
- [数组]面试题9 最大连续子串
- 小小白初入编程江湖之初入职场迷茫篇
- 北京程序员 VS 硅谷程序员(转)
- 在程序员的眼里,用户是这样使用他们开发的软件的
- 据说,年薪百万的程序员,都是这么开悟的
- 程序员眼中的英文单词是这样的…
- 码农十年连载四
- 黑马程序员 NSRange的基础知识总结及应用
- java基础面试题