两种解法:
(1)* 解题思路:
* 先将整型数组转换成String数组,然后将String数组排序,最后将排好序的字符串数组拼接出来。关键就是制定排序规则。
* 排序规则如下:
* 若ab > ba 则 a > b,
* 若ab < ba 则 a < b,
* 若ab = ba 则 a = b;
* 解释说明:
* 比如
"3"
<
"31"
但是
"331"
>
"313"
,所以要将二者拼接起来进行比较
public
String PrintMinNumber(
int
[] numbers) {
if
(numbers ==
null
|| numbers.length ==
0
)
return
""
;
int
len = numbers.length;
String[] str =
new
String[len];
StringBuilder sb =
new
StringBuilder();
for
(
int
i =
0
; i < len; i++){
str[i] = String.valueOf(numbers[i]);
}
Arrays.sort(str,
new
Comparator<String>(){
@Override
public
int
compare(String s1, String s2) {
String c1 = s1 + s2;
String c2 = s2 + s1;
return
c1.compareTo(c2);
}
});
for
(
int
i =
0
; i < len; i++){
sb.append(str[i]);
}
return
sb.toString();
}
(2)
public
class
Solution {
public
String PrintMinNumber(
int
[] numbers) {
String str =
""
;
for
(
int
i=
0
; i<numbers.length; i++){
for
(
int
j=i+
1
; j<numbers.length; j++){
int
a = Integer.valueOf(numbers[i]+
""
+numbers[j]);
int
b = Integer.valueOf(numbers[j]+
""
+numbers[i]);
if
(a > b){
int
t = numbers[i];
numbers[i] = numbers[j];
numbers[j] = t;
}
}
}
for
(
int
i =
0
; i < numbers.length; i++) {
str += String.valueOf(numbers[i]);
}
return
str;
}
}