package test
.com
;
import java
.util
.Arrays
;
public class Code07_FindNum {
public static int findNum(int num
){
String str
= Integer
.toString(num
);
char[] arrs
= str
.toCharArray();
Arrays
.sort(arrs
);
String arrsSort
= new String(arrs
);
StringBuilder sb
= new StringBuilder(arrsSort
).reverse();
int max
= Integer
.parseInt(sb
.toString());
arrs
= Integer
.toString(num
).toCharArray();
if(max
== num
){
return 0;
}
int index
= -1;
for (int i
= arrs
.length
-1; i
> 1 ; i
--) {
if(arrs
[i
] < arrs
[i
-1]){
continue;
}
index
= i
;
break;
}
if(index
== arrs
.length
- 1){
swap(arrs
, index
, index
-1);
return Integer
.parseInt(new String(arrs
));
}
int high
;
if(index
- 1 >= 0){
high
= index
- 1;
for (int i
= index
; i
< arrs
.length
; i
++) {
if(arrs
[i
] > arrs
[high
])
continue;
index
= i
;
break;
}
swap(arrs
, index
-1, high
);
Arrays
.sort(arrs
,high
+1, arrs
.length
);
return Integer
.parseInt(new String(arrs
));
}
return 0;
}
public static void swap(char[] arr
, int i
, int j
){
char tmp
= arr
[i
];
arr
[i
] = arr
[j
];
arr
[j
] = tmp
;
}
public static void main(String
[] args
) {
int num
= 23541;
System
.out
.println(num
);
System
.out
.println(findNum(num
));
int num2
= 246521;
System
.out
.println(num2
);
System
.out
.println(findNum(num2
));
int num3
= 12354;
System
.out
.println(num3
);
System
.out
.println(findNum(num3
));
}
}
转载请注明原文地址: https://yun.8miu.com/read-54325.html