LeetCode 第 1432 题:改变一个整数能得到的最大差值
2022-04-26 本文已影响0人
放开那个BUG
1、前言
题目描述2、思路
找到最大值的思路很简单,就是从第一个位置开始,将非'9'的数字替换成'9';
但是找最小值会有点麻烦。因为最小值分为第一位是1,和第一位不是1的情况。如果第一位不是1,那么只要替换第一位以及相同的数就行;如果第一位是1,那么后面的数替换成0就行,但是要判断一下后面的数是否等于第一位(1),如果是且这位是0的话,也不能换。
3、代码
class Solution {
public int maxDiff(int num) {
String numStrMax = String.valueOf(num);
for(int i = 0; i < numStrMax.length(); i++){
if(numStrMax.charAt(i) != '9'){
numStrMax = numStrMax.replace(numStrMax.charAt(i), '9');
break;
}
}
int max = Integer.parseInt(numStrMax);
String numStrMin = String.valueOf(num);
for(int i = 0; i < numStrMin.length(); i++){
// 第一个数不等于1
if(numStrMin.charAt(0) != '1'){
numStrMin = numStrMin.replace(numStrMin.charAt(i), '1');
break;
}
// 第一个数一定为1
if(numStrMin.charAt(0) != numStrMin.charAt(i) && numStrMin.charAt(i) != '0'){
numStrMin = numStrMin.replace(numStrMin.charAt(i), '0');
break;
}
}
int min = Integer.parseInt(numStrMin);
return max - min;
}
}