这是第 172 场周赛的第一题,很简单
题目链接:1323. 6 和 9 组成的最大数字
题目描述:
给你一个仅由数字69组成的正整数num
你最多只能翻转一位数字,将6变成9,或者把9变成6
请返回你可以得到的最大数字。

示例 1:

输入:num = 9669
输出:9969
解释: 改变第一位数字可以得到 6669
改变第二位数字可以得到 9969
改变第三位数字可以得到 9699
改变第四位数字可以得到 9666
其中最大的数字是 9969

示例 2:

输入:num = 9996
输出:9999
解释:将最后一位从 6 变到 9,其结果 9999 是最大的数。

示例 3:

输入:num = 9999
输出:9999
解释:无需改变就已经是最大的数字了。

提示:

  • 1 <= num <= 10^4
  • num 每一位上的数字都是 6 或者 9

**总体思路:**由示例可以看出,只要将给定数字中第一个6替换为9即可。

方法一:Java 现成的方法
Java String 类下有一个名为 replaceFirst 的方法,用给定的字符串替换与给定的正则表达式匹配的此字符串的第一个子字符串。下面是 Oracle 官方文档对其的描述:

class Solution {
    public int maximum69Number (int num) {
        String str = String.valueOf(num);
        str = str.replaceFirst("6", "9");
        return Integer.valueOf(str);
    }
}

此方法优点是简单方便,核心只是调用 replaceFirst 那一句,自己什么都不用做;缺点是效率比较低。

方法二:数组
将字符串转换为字符数组,对数组进行遍历,将遇到的第一个字符6替换为9即可。此方法比方法一稍微麻烦一点点,但也非常简单了,而且效率比较高。

class Solution {
    public int maximum69Number (int num) {
        String str = num + "";
        char[] chars = str.toCharArray();
        for (int i = 0; i < chars.length; i ++) {
            if (chars[i] == '6') {
                chars[i] = '9';
                break;
            }
        }
        return Integer.valueOf(new String(chars));
    }
}