给定一个正整数 n ,你可以做如下操作:
如果 n 是偶数,则用 n / 2替换 n 。
如果 n 是奇数,则可以用 n + 1或n - 1替换 n 。
返回 n 变为 1 所需的 最小替换次数 。
class Solution {
public int maximumSwap(int num) {
char[] charArray=String.valueOf(num).toCharArray();
int n=charArray.length;
int maxIdx=n-1;
int idx1=-1,idx2=-1;
for(int i=n-1;i>=0;i--){
if(charArray[i]>charArray[maxIdx]){
maxIdx=i;
}
else if(charArray[i]<charArray[maxIdx]){
idx1=i;
idx2=maxIdx;
}
}
if(idx1>=0){
swap(charArray,idx1,idx2);
return Integer.parseInt(new String(charArray));
}else {
return num;
}
}
public void swap(char[] charArray,int i,int j){
char temp=charArray[i];
charArray[i]=charArray[j];
charArray[j]=temp;
}
}