Leetcode--12. 整数转罗马数字

罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。

字符          数值
I             1
V             5
X             10
L             50
C             100
D             500
M             1000
例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做  XXVII, 即为 XX + V + II 。

通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4 。同样地,数字 9 表示为 IX。这个特殊的规则只适用于以下六种情况:

I 可以放在 V (5) 和 X (10) 的左边,来表示 4 和 9。
X 可以放在 L (50) 和 C (100) 的左边,来表示 40 和 90。 
C 可以放在 D (500) 和 M (1000) 的左边,来表示 400 和 900。
给定一个整数,将其转为罗马数字。输入确保在 1 到 3999 的范围内。

示例 1:

输入: 3
输出: "III"
示例 2:

输入: 4
输出: "IV"
示例 3:

输入: 9
输出: "IX"
示例 4:

输入: 58
输出: "LVIII"
解释: L = 50, V = 5, III = 3.
示例 5:

输入: 1994
输出: "MCMXCIV"
解释: M = 1000, CM = 900, XC = 90, IV = 4.

import java.util.Scanner;

public class Solution12 {
     public static String intToRoman(int num) {
         StringBuffer a = new StringBuffer();
         int x,y,i,j=0;
         if(num>=1000)
         {
             x = num/1000;
             num%=1000;
             for(i=0;i<x;i++)
             {
                 a.append("M")  ;
             }
             j+=x;
         }
         if(num>=900)
         {
             a.append("C");
             a.append("M");
             j+=2;
             num-=900;
         }
         if(num>=500)
         {
             x = num/500;
             num%=500;
             
                 for(i=j;i<j+x;i++)
                 {
                     a.append("D") ;
                 }
                 j+=x; 
             
             
         }
         if(num>=100)
         {
             x = num/100;
             num%=100;
             if(x==4)
             {
                 a.append("C")  ;
                 a.append("D")  ;
                 j+=2;
             }
             else
             {
                 for(i=j;i<j+x;i++)
                 {
                     a.append( "C");
                 }
                 j+=x;
             }
             
         }
         if(num>=90)
         {
             a.append("X");
             a.append("C");
             j+=2;
             num-=90;
         }
         if(num>=50)
         {
             x = num/50;
             num%=50;
            
                 for(i=j;i<j+x;i++)
                 {
                     a.append("L") ;
                 }
                 j+=x;
            
         }
         if(num>=10)
         {
             x = num/10;
             num%=10;
             if(x==4)
             {
                 a.append("X")  ;
                 a.append("L")  ;
                 j+=2;
             }
             else
             {
                 for(i=j;i<j+x;i++)
                 {
                     a.append("X") ;
                 }
                 j+=x;
             }
             
         }
         if(num==9)
         {
             a.append("IX");
             num = 0;
         }
         if(num>=5)
         {
             x = num/5;
             num%=5;
             for(i=j;i<j+x;i++)
             {
                 a.append("V") ;
             }
             j+=x;
         }
         if(num>=4)
         {
             x = num;
             a.append("IV");
             num-=4;
         }
         if(num>0)
         {
             for(i=0;i<num;i++)
             {
                 a.append("I");
             }
         }
         return a.toString();
            
        }
     public static void main(String[] args)
     {
         int num;
         Scanner sc = new Scanner(System.in); 
         num = sc.nextInt();
         System.out.println(intToRoman(num));
     }
}
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/485980.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python三国演义人物 统计分析前20个_使用python统计《三国演义》小说里人物出现次数前十名,并实现可视化。...

一、安装所需要的第三方库jieba (jieba是优秀的中文分词第三分库)pyecharts (一个优秀的数据可视化库)使用pycharm安装库打开Pycharm选择【File】下的Settings出现下面页面,选择右边的【】出现下面页面&#xff0c;在此页面顶端搜索想要的库&#xff0c;然后安装就可以了二、编…

沈航计算机考研上岸,【图片】一战厦大计算机上岸,经验帖。慢更【考研吧】_百度贴吧...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼再写一下我的初试经验。今天晚上有时间再更初试政治&#xff1a;政治切忌开始太早&#xff0c;战线过长&#xff0c;我是从9月开始&#xff0c;跟着肖秀荣的视频课看了一遍精讲精练&#xff0c;做了一遍1000题&#xff0c;一遍真题…

你真的了解盒模型么

说到前端, 大家第一反应是不是都是vue、react、webpack等这些大大小小的框架或者工具, 但其实这些都是和js相关的, 真正的样式会被大家忽略。其实真正呈现给大家看到华丽的页面, 都是样式才让他们多了那份色彩。那么大家觉得简单的css样式, 真的简单么? 让我们一起来看下, 开启…

ios10前台收到推送_iOS 13 beta 2 推送 | iOS 13 热门疑问解答

朋友们周二早&#xff0c;今天这期分享主要是给大家解答几个 iOS 13 相关的热门问题。今天的头条推送的是 HFP 的面膜&#xff0c;靠谱产品&#xff0c;有需求的朋友可以去他们的天猫旗舰店或者小程序商场看下。是否可以直接升级 &#xff1f;今天苹果正式推送了 iOS 13 beta 2…

认知科学顶刊:挑战过去50年神经科学观点,人类智力的优势或来自于记忆储存方式...

来源&#xff1a;brainnews莱斯特大学的神经科学专家发表了一篇文章&#xff0c;打破了过去50年神经科学的观点&#xff0c;认为人类储存记忆的方式是其智力优于动物的关键因素。该文章发表在Trends in Cognitive Sciences杂志。先前的研究认为&#xff0c;海马体&#xff08;大…

专业文化计算机艺考生,专业课和文化课都优秀?那艺考生的你不知道这个就损失大了...

原标题&#xff1a;专业课和文化课都优秀&#xff1f;那艺考生的你不知道这个就损失大了高水平艺术团招生作为高考特殊类型招生中的一种&#xff0c;很多人一直把它和艺术类招生傻傻分不清楚。简单来说&#xff0c;高水平艺术团招生和艺术类招生是两种不同的招生类别。详细说&a…

linux发送邮件的功能总结

使用linux系统服务器发送邮件的功能在平时工作中也是经常需要用到的&#xff0c;在这里总结一下&#xff0c;供以后参考&#xff1a; 1、直接使用管道发送邮件 echo "hello,this is the content of mail.welcome to www.mzone.cc" | mail -s "Hello from mzone.…

雷赛运动控制卡能不能用c语言_基于PMAC控制卡的三坐标测量机控制系统

三坐标测量机控制原理三坐标测量机获取测头触碰点相对于系统原点的三坐标值&#xff0c;然后经特定算法处理&#xff0c;得到尺寸公差或形位公差。测头在X、Y&#xff0c;Z三个相互垂直的导轨上进行复合运动&#xff0c;实现逐点测量&#xff1b;或按一定运动轨迹&#xff0c;实…

计算机综合应用实验,计算机综合应用实验二WORD应用.doc

文档介绍&#xff1a;第二章 WORD 应用设置文档打印为“横向”文档的“纵向”和“横向”可以满足不通纸张, 和不同用户的不同需求。在打印时可以根据情况进行调整选择, 方法如下: 点击菜单“文件”→“页面设置”命令, 在页边距选项卡中的“方向”选择“横向”,如图: 如何将网页…

如何结合因果与强化学习?看最新《因果强化学习:动机,概念,挑战与应用》报告,85页ppt...

来源&#xff1a;专知强化学习(RL)[17]和因果推理[10]都是机器学习不可缺少的组成部分&#xff0c;在人工智能中都发挥着至关重要的作用。最初促使我整合这两者的是机器学习在医疗保健和医学领域的最新发展。回顾过去&#xff0c;人类自出生以来就不可避免地伴随着疾病&#xf…

Leetcode--75. 颜色分类

给定一个包含红色、白色和蓝色&#xff0c;一共 n 个元素的数组&#xff0c;原地对它们进行排序&#xff0c;使得相同颜色的元素相邻&#xff0c;并按照红色、白色、蓝色顺序排列。 此题中&#xff0c;我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。 注意: 不能使用代码…

boot druid 长时间不连接 异常_Spring Boot学习:如何使用Druid数据源

Druid概述Druid是阿里巴巴开源的一款非常优秀的数据库连接池。在Java应用程序开发中&#xff0c;常用的连接池还有DBCP、C3P0、Proxool等。SpringBoot2.X 版本开始默认的是HikariCP(号称性能最好的数据库连接池),Druid性能好而且监控也比较方便。刚兴趣的同学可以读一下,GitHub…

演讲实录丨中科大陈小平教授《从封闭性到非封闭性:2020到2035年智能机器的机遇和挑战》...

来源&#xff1a;中国人工智能学会陈小平中国科学技术大学机器人实验室主任、教授以下是陈小平教授的演讲实录&#xff1a;非常高兴有这个机会进行中、新学术交流。本报告包括四方面内容。第一&#xff0c;关于人工智能&#xff08;简称AI&#xff09;的两种类型&#xff0c;一…

充电电流用软件测试准吗,实验:1A与2.1A对手机充电电流一样的,小伙伴再也不用担心咯...

新福克斯舒适&#xff0c;USB在手套箱(不方便啊&#xff0c;郁闷)&#xff0c;插U盘放MP3&#xff0c;一个行车记录仪&#xff0c;插在点烟器里&#xff0c;平时没事也够用&#xff0c;要跑一次长途&#xff0c;用iPhone 5C高德导航&#xff0c;靠&#xff0c;问题来&#…

关于线性代数的理解

自从大学学了线性代数以来, 对线性代数的概念一直很迷惑. 感觉中间像是隔了一层布一样, 怎么都理解不了线性代数是个什么东西. 读了人工智能以后, 发现没有线性代数的扎实基础根本学不了人工智能, 特别是在图像处理还是自然语言处理的过程中, 线性代数是 一个非常重要的基础, 可…

Leetcode--31. 下一个排列

实现获取下一个排列的函数&#xff0c;算法需要将给定数字序列重新排列成字典序中下一个更大的排列。 如果不存在下一个更大的排列&#xff0c;则将数字重新排列成最小的排列&#xff08;即升序排列&#xff09;。 必须原地修改&#xff0c;只允许使用额外常数空间。 以下是…

python 结尾回车_理解不了Python正则表达式?我帮你搞定

点击蓝字“python教程”关注我们哟&#xff01;在学习Python的过程中&#xff0c;我们难免会遇到比较晦涩、难以理解的内容&#xff0c;比如Python中的正则表达式、面向对象等内容&#xff0c;为了更好地帮助大家理解&#xff0c;我们今天就先为大家详细解读Python正则表达式&a…

怎么设置班级文件服务器,如何开设论坛如题下学期老师组织学生开一个班级论坛有专用服务器接下 爱问知识人...

很多朋友都希望有一个自己的论坛&#xff0c;但是做论坛又谈何容易&#xff1f;这个问题很大&#xff0c;如果自己编程开发的话&#xff0c;至少需要半个月不睡觉甚至好几个月、好几年的时间。一个好的论坛&#xff0c;便于网友浏览、占用服务器资源少、运行速度快是最重要的。…

陈左宁院士:人工智能模型和算法的七大发展趋势

来源&#xff1a;C114通信网、北京物联网智能技术应用协会在近日举行的“第十六届CCF全过高性能计算学术年会”上&#xff0c;中国工程院副院长、中国科协副主席、中国工程院院士陈左宁发表了题为《人工智能进展对算力需求分析》的演讲。在演讲中&#xff0c;她阐述了人工智能模…

ABAP术语-World Wide Web

World Wide Web原文&#xff1a;http://www.cnblogs.com/qiangsheng/archive/2008/03/21/1115728.htmlInternet service. The World Wide Web generates documents and presents them to Internet users in a standard format known as HTML. These documents can be linked to…