美文网首页
LeetCode 第 1432 题:改变一个整数能得到的最大差值

LeetCode 第 1432 题:改变一个整数能得到的最大差值

作者: 放开那个BUG | 来源:发表于2022-04-26 22:24 被阅读0次

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;
    }
}

相关文章

网友评论

      本文标题:LeetCode 第 1432 题:改变一个整数能得到的最大差值

      本文链接:https://www.haomeiwen.com/subject/innhyrtx.html