zhiyin1209

题目来源于力扣(LeetCode

一、题目

1323. 6 和 9 组成的最大数字

题目相关标签:数学

提示:

  • 1 <= num <= 10^4

  • num 每一位上的数字都是 6 或者 9 。

二、解题思路

2.1 转换字符串方式

  1. 将数值转换成字符串方式

  2. 通过字符串的替换方法,将首次出现的字符 6 改变(替换)为 9

    为什么是首次?

    题目要求: 最多只能翻转一位数字

    为什么是字符 6 替换为 9?

    题目要求: 需要返回可以得到的最大数字,那么只能是高位(左边)的字符 6 改变成 9,因为把字符 9 改变成 6 只会把数变小

2.2 数学计算方式

  1. 根据给定的 num 范围:1 <= num <= 10 ^ 4(10000)对 num 进行分段的判断与计算

  2. 同理,需要将高位上的 6 转换成 9

三、代码实现

3.1 转换字符串方式

public static int maximum69Number(int num) {
    // num == 9999 时无需改变
    if (num == 9999) {
        return num;
    }
    // 转换成字符串
    String str = String.valueOf(num);
    // 利用 replaceFirst 的类库方法,将字符串形式的 num 数首次出现的 6 转换为 9
    String afterReplaceStr = str.replaceFirst("6", "9");
    return Integer.parseInt(afterReplaceStr);
}

3.2 数学计算方式

public static int maximum69Number(int num) {
    // num == 9999 时无需改变
    if (num == 9999) {
        return num;
    }
    // 6999 的情况,6 在第 1 位
    if (num / 1000 == 6) {
        num += 3000;
    }
    // 9699 的情况,6 在第 2 位
    else if (num % 1000 / 100 == 6) {
        num += 300;
    }
    // 9969 的情况,6 在第 3 位
    else if (num % 100 / 10 == 6) {
        num += 30;
    }
    // 9996 的情况,6 在第 4 位
    else if (num % 10 == 6) {
        num += 3;
    }
    return num;
}

四、执行用时

4.1 转换字符串方式

4.2 数学计算方式

五、部分测试用例

public static void main(String[] args) {
//        int num = 9669;  // output:9969
//        int num = 9996;  // output:9999
        int num = 9999;  // output:9999
        int result = maximum69Number(num);
        System.out.println(result);    
}

分类:

技术点:

相关文章:

  • 2022-12-23
  • 2022-01-01
  • 2022-01-26
  • 2021-12-12
  • 2022-12-23
  • 2022-12-23
  • 2021-10-25
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-12-27
  • 2021-11-17
  • 2021-07-27
  • 2021-10-22
相关资源
相似解决方案