1323.6和9组成的最大数字

  1. 1323.6和9组成的最大数字
    1. 1323.1 题目
    2. 1323.2 题解
      1. 替换字符串
    3. 1323.3 代码
    4. 1323.4 运行结果

1323.6和9组成的最大数字


1323.1 题目

给你一个仅由数字 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

1323.2 题解

替换字符串

// 方法一:替换字符串
// 将数字转换为字符串
// 遍历找到第一个出现的 6 并将其替换为 9
// 转回数字后返回
static int Maximum69Number1(int num)
{
    string numStr = num.ToString(); // 将数字转换为字符串
    int index = numStr.IndexOf('6'); // 找到第一个出现的6的索引位置
    if (index != -1) // 如果找到了6
    {
        numStr = numStr.Remove(index, 1).Insert(index, "9"); // 将第一个6替换为9
    }

    return int.Parse(numStr); // 将修改后的字符串转换为整数并返回
}

1323.3 代码

using Console = System.Console;
using System;

class Program
{
    static void Main()
    {
        #region 题目

        // 给你一个仅由数字 6 和 9 组成的正整数 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 。

        #endregion

        #region 测试

        // 示例 1
        int num1 = 9669;
        int result1_1 = Maximum69Number1(num1);
        Console.WriteLine($"示例1 方法1 输出:{result1_1}");

        // 示例 2
        int num2 = 9996;
        int result2_1 = Maximum69Number1(num2);
        Console.WriteLine($"示例2 方法1 输出:{result2_1}");

        // 示例 3
        int num3 = 9999;
        int result3_1 = Maximum69Number1(num3);
        Console.WriteLine($"示例3 方法1 输出:{result3_1}");

        #endregion
    }

    #region 答案

    // 方法一:替换字符串
    // 将数字转换为字符串
    // 遍历找到第一个出现的 6 并将其替换为 9
    // 转回数字后返回
    static int Maximum69Number1(int num)
    {
        string numStr = num.ToString(); // 将数字转换为字符串
        int index = numStr.IndexOf('6'); // 找到第一个出现的6的索引位置
        if (index != -1) // 如果找到了6
        {
            numStr = numStr.Remove(index, 1).Insert(index, "9"); // 将第一个6替换为9
        }

        return int.Parse(numStr); // 将修改后的字符串转换为整数并返回
    }

    #endregion
}

1323.4 运行结果

示例1 方法1 输出:9969
示例2 方法1 输出:9999
示例3 方法1 输出:9999


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com

×

喜欢就点赞,疼爱就打赏