当前位置: 首页 > article >正文

整数转罗马数字

hello 大家好!今天开写一个新章节,每一天一道算法题。让我们一起来学习算法思维吧!

在这里插入图片描述

function intToRoman(num) {
    // 定义罗马数字符号和对应的整数值,按照从大到小的顺序排列
    const values = [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1];
    const symbols = ["M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"];

    // 初始化一个空字符串,用于存储最终的罗马数字结果
    let result = '';

    // 遍历值和符号数组
    for (let i = 0; i < values.length; i++) {
        // 当输入的数字 num 大于等于当前值时
        while (num >= values[i]) {
            // 将对应的罗马数字符号添加到结果字符串中
            result += symbols[i];
            // 从输入数字中减去当前值
            num -= values[i];
        }
    }

    return result;
}

// 测试示例
const num = 3749;
console.log(intToRoman(num)); 

代码解释

整体思路
要将一个整数转换为罗马数字,我们可以使用贪心算法。首先,我们需要准备好罗马数字符号和它们对应的整数值,按照从大到小的顺序排列。然后,从最大的值开始尝试,如果输入的整数大于或等于当前的值,就将对应的罗马数字符号添加到结果字符串中,并从输入的整数中减去该值,重复这个过程直到输入的整数变为 0。

代码步骤分析

定义数组:
values 数组存储了罗马数字符号对应的整数值,按照从大到小的顺序排列,包含了特殊的减法形式对应的数值(如 900、400 等)。
symbols 数组存储了对应的罗马数字符号,与 values 数组中的值一一对应。

初始化结果字符串:
result 初始化为空字符串,用于存储最终的罗马数字表示。

遍历和转换:
使用 for 循环遍历 values 数组。
对于每个值,使用 while 循环检查输入的整数 num 是否大于或等于该值。如果是,则将对应的罗马数字符号添加到 result 字符串中,并从 num 中减去该值。
重复这个过程,直到 num 小于当前值,然后继续处理下一个较小的值。

返回结果:
当遍历完所有的值后,result 字符串中就存储了最终的罗马数字表示,将其返回。


http://www.kler.cn/a/523599.html

相关文章:

  • (done) MIT6.S081 2023 学习笔记 (Day6: LAB5 COW Fork)
  • YOLOv11-ultralytics-8.3.67部分代码阅读笔记-head.py
  • C语言-运算符
  • ios swift画中画技术尝试
  • 算法基础学习——二分查找(附带Java模板)
  • 【漫话机器学习系列】064.梯度下降小口诀(Gradient Descent rule of thume)
  • 您与此网站之间建立的连接不安全
  • Genetic Prompt Search via Exploiting Language Model Probabilities
  • 5.2 软件需求分析
  • Qpython+Flask监控添加发送语音中文信息功能
  • 电商系统-用户认证(三)基于公钥解析JWT令牌
  • Linux之详谈——权限管理
  • 【信息系统项目管理师-选择真题】2008下半年综合知识答案和详解
  • 基于PostgreSQL的自然语义解析电子病历编程实践与探索(上)
  • DIY QMK量子键盘
  • 【Unity】cinemachine核心知识
  • 知识库管理驱动企业知识流动与工作协同创新模式
  • MIMIC-IV数据部署
  • TypeScript 学习
  • 为AI聊天工具添加一个知识系统 之76 详细设计之17 正则表达式 之4 正则表达式模板
  • 基于蓝牙6.0的RSSI和UWB融合定位方法,可行性分析
  • 【华为OD-E卷 - 数字加减游戏 100分(python、java、c++、js、c)】
  • 【Postman接口测试】Postman的全局变量和环境变量设置
  • 运算符(C#)
  • MySQL 9.2.0 的功能
  • ImportError: No module named Cryptodome.Cipher