• 【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 官方文档对其的描述:
    replaceFirst

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

    方法二

  • 相关阅读:

    (luogu)[模板]最长公共子序列
    表达式的值
    邮票面值设计
    尼克的任务
    HISTOGRA
    消防局的设立
    青蛙的约会
    产生数
    奇怪的电梯
  • 原文地址:https://www.cnblogs.com/ME-WE/p/12433575.html
Copyright © 2020-2023  润新知