首页 > 编程语言 >程序分享--常见算法/编程面试题:整数转罗马数字

程序分享--常见算法/编程面试题:整数转罗马数字

时间:2024-06-05 18:34:24浏览次数:28  
标签:case 10 面试题 return -- int 罗马数字 num

关注我,持续分享逻辑思维&管理思维&面试题; 可提供大厂面试辅导、及定制化求职/在职/管理/架构辅导;

推荐专栏《10天学会使用asp.net编程AI大模型》,目前已完成所有内容,持续上传中。一顿烧烤不到的费用,让人能紧跟时代的浪潮。从普通网站,到公众号、小程序,再到AI大模型网站。干货满满。学成后可接项目赚外快,绝对划算。不仅学会如何编程,还将学会如何将AI技术应用到实际问题中,为您的职业生涯增添一笔宝贵的财富。

-------------------------------------正文----------------------------------------

七个不同的符号代表罗马数字,其值如下:

符号
I1
V5
X10
L50
C100
D500
M1000

罗马数字是通过添加从最高到最低的小数位值的转换而形成的。将小数位值转换为罗马数字有以下规则:

  • 如果该值不是以 4 或 9 开头,请选择可以从输入中减去的最大值的符号,将该符号附加到结果,减去其值,然后将其余部分转换为罗马数字。
  • 如果该值以 4 或 9 开头,使用 减法形式,表示从以下符号中减去一个符号,例如 4 是 5 (V) 减 1 (I): IV ,9 是 10 (X) 减 1 (I):IX。仅使用以下减法形式:4 (IV),9 (IX),40 (XL),90 (XC),400 (CD) 和 900 (CM)。
  • 只有 10 的次方(IXCM)最多可以连续附加 3 次以代表 10 的倍数。你不能多次附加 5 (V),50 (L) 或 500 (D)。如果需要将符号附加4次,请使用 减法形式

给定一个整数,将其转换为罗马数字。

示例 1:

输入:num = 3749

输出: "MMMDCCXLIX"

解释:

3000 = MMM 由于 1000 (M) + 1000 (M) + 1000 (M)
 700 = DCC 由于 500 (D) + 100 (C) + 100 (C)
  40 = XL 由于 50 (L) 减 10 (X)
   9 = IX 由于 10 (X) 减 1 (I)
注意:49 不是 50 (L) 减 1 (I) 因为转换是基于小数位

示例 2:

输入:num = 58

输出:"LVIII"

解释:

50 = L
 8 = VIII

示例 3:

输入:num = 1994

输出:"MCMXCIV"

解释:

1000 = M
 900 = CM
  90 = XC
   4 = IV

提示:
  • 1 <= num <= 3999

-------------------------------------答案----------------------------------------

class Solution {
public:
    string getOne(int n) {
        switch(n) {
            case 0: return "";
            case 1: return "I";
            case 2: return "II";
            case 3: return "III";
            case 4: return "IV";
            case 5: return "V";
            case 6: return "VI";
            case 7: return "VII";
            case 8: return "VIII";
            case 9: return "IX";
        }
        return "";
    }
    string getTen(int n) {
        switch(n) {
            case 0: return "";
            case 1: return "X";
            case 2: return "XX";
            case 3: return "XXX";
            case 4: return "XL";
            case 5: return "L";
            case 6: return "LX";
            case 7: return "LXX";
            case 8: return "LXXX";
            case 9: return "XC";
        }
        return "";
    }
    string getHundred(int n) {
        switch(n) {
            case 0: return "";
            case 1: return "C";
            case 2: return "CC";
            case 3: return "CCC";
            case 4: return "CD";
            case 5: return "D";
            case 6: return "DC";
            case 7: return "DCC";
            case 8: return "DCCC";
            case 9: return "CM";
        }
        return "";
    }
    string getThousand(int n) {
        switch(n) {
            case 0: return "";
            case 1: return "M";
            case 2: return "MM";
            case 3: return "MMM";
        }
        return "";
    }
    string intToRoman(int num) {
        int one = num%10;
        int ten = (num/10)%10;
        int hundred = (num/100)%10;
        int thousand = num/1000;
        return getThousand(thousand)+getHundred(hundred)+getTen(ten)+getOne(one);
    }
};

感兴趣的同学辛苦 关注/点赞 ,持续分享逻辑、算法、管理、技术、人工智能相关的文章。

有意找工作的同学,请参考博主的原创:《面试官心得--面试前应该如何准备》,《面试官心得--面试时如何进行自我介绍》, 《做好面试准备,迎接2024金三银四》。
或关注博主免费专栏【程序员宝典--常用代码分享】里面有大量面试涉及的算法或数据结构编程题。

博主其它经典原创:《管理心得--如何高效进行跨部门合作》,《技术心得--如何成为优秀的架构师》、《管理心得--如何成为优秀的架构师》、《管理心理--程序员如何选择职业赛道》,及
C#实例:SQL如何添加数据》,《C#实战分享--爬虫的基础原理及实现》欢迎大家阅读。

标签:case,10,面试题,return,--,int,罗马数字,num
From: https://blog.csdn.net/weixin_60437218/article/details/139182537

相关文章

  • Java转UML类图实现方法
    一、maven依赖<dependency><groupId>com.github.javaparser</groupId><artifactId>javaparser-core</artifactId><version>3.26.0</version></dependency>二、解析Java文件类关系importcom.github.javaparser.Java......
  • Zibll子比主题美化WordPress底部添加渐变色统计代码 新增显示评论总数及本周发布文章
    在网站底部添加一个统计信息,可以看到网站的运营情况,如会员数量,文章数量、网站的总浏览量、当天发布的文章数量、网站运营天数等,并且这个统计信息背景是渐变色的,非常漂亮。之前有分享过这个代码,今天新增了一个显示评论总数,把今天发布文章数量我改为了本周发布的数量,如果需要之前......
  • weblogic使用过程中的部分报错与解决方案
     引用:https://www.cnblogs.com/jeff-z-blog/p/9534591.html报错一:vim中E212:无法打开并写入文件编写配置文件时,常常忘记切换到root用户,导致文件编辑完毕,敲入:wq退出保存时,出现E212:无法打开并写入文件的错误提示。这是由于在该目录下当前用户没有写权限导致,修改该文件的权限即......
  • 【DAY8】循环干涉和循环嵌套
    练习题:全系1000学生中,征集慈善募捐,当总数达到10万元就结束,统计此时捐款的人数,以及平均每人捐款的数目#include<stdio.h>intmain(){ intnumOfPerson; inttotalMoney=0; intmoney; for(numOfPerson=1;numOfPerson<=1000;numOfPerson++){ printf("请输入捐款数......
  • (数据科学学习手札161)高性能数据分析利器DuckDB在Python中的使用
    本文完整代码及附件已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes1简介大家好我是费老师,就在几天前,经过六年多的持续开发迭代,著名的开源高性能分析型数据库DuckDB发布了其1.0.0正式版本。DuckDB具有极强的单机数据分析性能表现,功能丰......
  • 【DAY9】循环嵌套输出某个规律的数列
    题目:输出以下4*5矩阵:12345246810369121548121620以下是代码:#include<stdio.h>intmain(){ inti; intj; for(i=1;i<=4;i++){ for(j=1;j<=5;j++){ printf("%d",i*j);//每个数都是i和j的乘积 } printf("\n&quo......
  • 手动二进制部署的 kubernetes 集群证书过期处理
    原文链接:https://maoqide.live/posts/cloud/kubernetes-certs-renew现象一个二进制部署的kubernetes集群,突然发现无法连接到apiserver,执行kubectl时报错:Unabletoconnecttotheserver:x509:certificatehasexpiredorisnotyetvalid:currenttime2024-05-31T15......
  • 有这么一个桌面日历就够了 记事代办生日全都有了
    日历功能我相信很多伙伴都用过,而且很多人都会有经常看日历的习惯,所以一款实用又美观的桌面日历就是一个非常不错的选择了。而如果这个日历不仅好看,还可以方便记事,待办提醒,生日管理,这样是不是就很强大了啊?我们一起来看下,这个就是“芝麻日历”(https://rili.zhimasoft.cn/?cdn)的......
  • 生日倒计时 帮你记住所有朋友的生日 一个非常有趣的桌面倒计时工具
    生日对于每个人都是非常特殊日子,总是充满了期待和喜悦。当生日的脚步逐渐接近,我们的心情也愈发激动,期待着那一天的到来,期待着与亲朋好友的欢聚,期待着那份属于自己的惊喜和祝福。不知道大家是否会忘记自己的生日,或者是朋友的生日,我估计应该会有许多的人都会忘记,笔记记住太多朋......
  • Java开发必备软件工具
            Java开发工程师在进行后端开发项目时,可能会使用到一系列的软件和工具,以完成从编码、构建、测试到部署的整个流程。以下是一些常见的软件和工具列表:开发工具包(JDK)OracleJDK/OpenJDK:提供Java运行环境和编译工具。集成开发环境(IDE)IntelliJIDEA:......