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

这是第 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));
    }
}

全部评论

相关推荐

Yushuu:你的确很厉害,但是有一个小问题:谁问你了?我的意思是,谁在意?我告诉你,根本没人问你,在我们之中0人问了你,我把所有问你的人都请来 party 了,到场人数是0个人,誰问你了?WHO ASKED?谁问汝矣?誰があなたに聞きましたか?누가 물어봤어?我爬上了珠穆朗玛峰也没找到谁问你了,我刚刚潜入了世界上最大的射电望远镜也没开到那个问你的人的盒,在找到谁问你之前我连癌症的解药都发明了出来,我开了最大距离渲染也没找到谁问你了我活在这个被辐射蹂躏了多年的破碎世界的坟墓里目睹全球核战争把人类文明毁灭也没见到谁问你了😆
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务