504.七进制数

  1. 504.七进制数
    1. 504.1 题目
    2. 504.2 题解
      1. 递归法
      2. 迭代法
    3. 504.3 代码
    4. 504.4 运行结果

504.七进制数


504.1 题目

给定一个整数 num,将其转化为 7 进制,并以字符串形式输出。

示例 1:

输入: num = 100
输出: "202"

示例 2:

输入: num = -7
输出: "-10"

提示:

  • -10^7 <= num <= 10^7

504.2 题解

递归法

// 方法一:递归法
// 取余再递归传入除7的值
static string ConvertToBase71(int num)
{
    // 递归基,当 num 的绝对值小于 7 时,返回其字符串形式
    if (Math.Abs(num) < 7)
    {
        return num.ToString();
    }

    // 递归调用,将商部分递归转化为 7 进制,并将余数添加到字符串中
    return ConvertToBase71(num / 7) + Math.Abs(num % 7).ToString();
}

迭代法

// 方法二:迭代法
// 循环计算商和余数,将余数添加到 StringBuilder 中
static string ConvertToBase72(int num)
{
    // 处理特殊情况,当 num 为 0 时直接返回 "0"
    if (num == 0)
    {
        return "0";
    }

    // 使用 StringBuilder 存储结果
    System.Text.StringBuilder result = new System.Text.StringBuilder();

    // 处理负数情况,添加负号并取绝对值
    bool isNegative = num < 0;
    if (isNegative)
    {
        num = Math.Abs(num);
    }

    // 迭代计算商和余数,将余数添加到 StringBuilder 中
    while (num > 0)
    {
        int remainder = num % 7;
        result.Insert(0, remainder.ToString()); // 在 StringBuilder 的开头插入余数
        num /= 7;
    }

    // 如果是负数,插入负号
    if (isNegative)
    {
        result.Insert(0, "-");
    }

    return result.ToString();
}

504.3 代码

using System;
using System.Text;

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

        // 给定一个整数 num,将其转化为 7 进制,并以字符串形式输出。
        // 示例 1:
        // 输入: num = 100
        // 输出: "202"
        // 示例 2:
        // 输入: num = -7
        // 输出: "-10"
        // 提示:-107 <= num <= 107

        #endregion

        #region 测试

        // 示例 1
        int num1 = 100;
        string result1_1 = ConvertToBase71(num1);
        Console.WriteLine($"示例1 方法1 输出:{result1_1}");
        string result1_2 = ConvertToBase72(num1);
        Console.WriteLine($"示例1 方法2 输出:{result1_2}");

        // 示例 2
        int num2 = -7;
        string result2_1 = ConvertToBase71(num2);
        Console.WriteLine($"示例2 方法1 输出:{result2_1}");
        string result2_2 = ConvertToBase72(num2);
        Console.WriteLine($"示例2 方法2 输出:{result2_2}");

        #endregion
    }

    #region 答案

    // 方法一:递归法
    // 取余再递归传入除7的值
    static string ConvertToBase71(int num)
    {
        // 递归基,当 num 的绝对值小于 7 时,返回其字符串形式
        if (Math.Abs(num) < 7)
        {
            return num.ToString();
        }

        // 递归调用,将商部分递归转化为 7 进制,并将余数添加到字符串中
        return ConvertToBase71(num / 7) + Math.Abs(num % 7).ToString();
    }

    // 方法二:迭代法
    // 循环计算商和余数,将余数添加到 StringBuilder 中
    static string ConvertToBase72(int num)
    {
        // 处理特殊情况,当 num 为 0 时直接返回 "0"
        if (num == 0)
        {
            return "0";
        }

        // 使用 StringBuilder 存储结果
        System.Text.StringBuilder result = new System.Text.StringBuilder();

        // 处理负数情况,添加负号并取绝对值
        bool isNegative = num < 0;
        if (isNegative)
        {
            num = Math.Abs(num);
        }

        // 迭代计算商和余数,将余数添加到 StringBuilder 中
        while (num > 0)
        {
            int remainder = num % 7;
            result.Insert(0, remainder.ToString()); // 在 StringBuilder 的开头插入余数
            num /= 7;
        }

        // 如果是负数,插入负号
        if (isNegative)
        {
            result.Insert(0, "-");
        }

        return result.ToString();
    }

    #endregion
}

504.4 运行结果

示例1 方法1 输出:202
示例1 方法2 输出:202
示例2 方法1 输出:-10
示例2 方法2 输出:-10


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

×

喜欢就点赞,疼爱就打赏