import java.util.Scanner;
public class Solution {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
int result = change(num);
System.out.println(result);
}
public static int change(int num){
if(num0)
return -1;
String s = Integer.toString(num);
String[] strArr = s.split();
//创建原始数字的数组
int[] arr = new int[strArr.length];
int[] tempArr = new int[strArr.length];
for (int i = 0; i arr.length; i++) {
arr[i] = Integer.valueOf(strArr[i]);
tempArr[i] = Integer.valueOf(strArr[i]);
}
sortArr(tempArr);
//改变原始数组
for (int i = 0; i arr.length; i++) {
if(arr[i]!=tempArr[i]){
//找更大位数的索引
int index = findIndex(arr,i+1,tempArr[i]);
//交换数字
int temp = arr[i];
arr[i] = arr[index];
arr[index] = temp;
break;
}
}
//构建返回数字
int result=0;
int step = 1;
for (int i = 0; i arr.length; i++) {
result += arr[arr.length-1-i]step;
step = 10;
}
return result;
}
private static int findIndex(int[] arr, int j, int value) {
int index = -1;
for (int i = j; i arr.length; i++) {
if(arr[i]==value){
index = i;
break;
}
}
return index;
}
//从大到小排序
private static void sortArr(int[] arr) {
for(int i=0; iarr.length-1; i++){
int s = i;
for(int j=i+1; jarr.length; j++){
if(arr[s]arr[j]){
s = j;
}
}
//交换元素
if(i!=s){
int temp = arr[s];
arr[s] = arr[i];
arr[i] = temp;
}
}
}
}
最多交换一次一个给定数字的其中两位,输出可得到的最大值
最新推荐文章于 2024-08-01 10:42:31 发布