LeetCode:12. Integer to Roman(Medium)
1. 原题链接
https://leetcode.com/problems/integer-to-roman/description/
2. 题目要求
(1) 将整数转换成罗马数字; (2) 整数的范围1-3999
3. 关于罗马数字
(1)对应整数
| 罗马数字 | I | V | X | L | C | D | M |
| 对应整数 | 1 | 5 | 10 | 50 | 100 | 500 | 1000 |
(2)罗马数字的书写规则
- 相同的数字连写, 所表示的数等于这些数字相加得到的数。如 XXX表示 30
- 小的数字在大的数字的右边, 所表示的数等于这些数字相加得到的数 如VIII 表示8
- 小的数字(限于I, X, C)在大的数字的左边, 所表示的数等于大数减去小的数: 如IV 表示4
- 在一个数的上面画一条横线, 表示这个数增值1000倍(由于题目只考虑4000以内的数,所以这条规则不用考虑)。
(3)罗马数字的组合规则
- I, X, C: 最多只能连用3个, 如果放在大数的左边,只能用1个。
- V, L, D: 不能放在大数的左边,只能使用一个。
- I 只能用在V和X的左边。 IV表示4, IX表示9
- X只能放在L,C左边。 XL 表示40, XC表示90
- C放在左边时只能用在D, M左边。 CD 表示400, CM表示900
4. 解题思路
(1)找出所给整数每一位上对应的罗马数字。例如给出整数2307,千位上为2,2000对应罗马数字MM;百位上为3,300对应罗马数字CCC;个位上为7,7对应的罗马数字为VII,故可的2307对应的罗马数字为MMCCCVII。
(2)于是我们要列出不同位上、不同数字对应的罗马数字:
| 千位上的数字 | 0 | 1 | 2 | 3 |
| 对应罗马数字 | M | MM | MMM |
| 百位上的数字 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 对应罗马数字 | C | CC | CCC | CD | D | DC | DCC | DCCC | CM |
| 十位上的数字 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 对应罗马数字 | X | XX | XXX | XL | L | LX | LXX | LXXX | XC |
| 个位上的数字 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 对应罗马数字 | I | II | III | IV | V | VI | VII | VIII | IX |
5. 代码实现
package com.huiAlex;
public class IntegerToRoman12 {
public static void main(String[] args) {
System.out.println(IntegerToRoman12.intToRoman(999));
}
public static String intToRoman(int num) {
String M[] = {"", "M", "MM", "MMM"}; // 千位上对应的罗马数字
String C[] = {"", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM"}; // 百位上对应的罗马数字
String X[] = {"", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC"}; // 十位上对应的罗马数字
String I[] = {"", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"}; // 个位上对应的罗马数字
return M[num/1000] + C[(num%1000)/100] + X[(num%100)/10] + I[num%10];
}
}
LeetCode:12. Integer to Roman(Medium)的更多相关文章
- LeetCode:40. Combination Sum II(Medium)
1. 原题链接 https://leetcode.com/problems/combination-sum-ii/description/ 2. 题目要求 给定一个整型数组candidates[ ]和 ...
- LeetCode:5. Longest Palindromic Substring(Medium)
原题链接:https://leetcode.com/problems/longest-palindromic-substring/description/ 1. 题目要求:找出字符串中的最大回文子串 ...
- Java-Runoob-高级教程-实例-方法:12. Java 实例 – Enum(枚举)构造函数及方法的使用-um
ylbtech-Java-Runoob-高级教程-实例-方法:12. Java 实例 – Enum(枚举)构造函数及方法的使用 1.返回顶部 1. Java 实例 - Enum(枚举)构造函数及方法的 ...
- 【一天一道LeetCode】#12 Integer to Roman
一天一道LeetCode系列 (一)题目 Given an integer, convert it to a roman numeral. Input is guaranteed to be with ...
- 《LeetBook》leetcode题解(12):Integer to Roman[M]
我现在在做一个叫<leetbook>的免费开源书项目,力求提供最易懂的中文思路,目前把解题思路都同步更新到gitbook上了,需要的同学可以去看看 书的地址:https://hk029.g ...
- 【LeetCode】12. Integer to Roman (2 solutions)
Integer to Roman Given an integer, convert it to a roman numeral. Input is guaranteed to be within t ...
- Windows Phone本地数据库(SQLCE):12、插入数据(翻译)
这是“windows phone mango本地数据库(sqlce)”系列短片文章的第十二篇. 为了让你开始在Windows Phone Mango中使用数据库,这一系列短片文章将覆盖所有你需要知道的 ...
- LeetCode:14. Longest Commen Prefix(Easy)
1. 原题链接 https://leetcode.com/problems/longest-common-prefix/description/ 2. 题目要求 给定一个字符串数组,让你求出该数组中所 ...
- LeetCode 12 Integer to Roman (整数转罗马数字)
题目链接: https://leetcode.com/problems/integer-to-roman/?tab=Description String M[] = {"", ...
随机推荐
- Jmeter入门11 使用Simple Controller组织接口测试用例
接口测试实践中,可以使用Simple Controller来组织测试用例. 官网上说该控制器的主要用途用来组织采样器和其他的逻辑控制器等. 以下为一个接口测试项目结构示例: 1 测试计划 >添加 ...
- 构建高性能插件式Web框架
基于MVC插件模式构建支持数据库集群.数据实时同步.数据发布与订阅的Web框架系统.如下图: 1.基于插件式开发 采用插件模式开发的优点是使得系统框架和业务模式有效地进行分离,系统更新也比较简单,只需 ...
- 用PHP向数据库中实现简单的增删改查(纯代码)
<?php $con = mysql_connect("localhost:3306","root",""); if (!$con) ...
- 昨天刚看了Handler和HandlerThread这个东西,不明白为什么要用这么复杂的东西,而且Handler直接post的话好像还不是子线程运行。那我再开发的时候直接用Thread行不行?两个有什么区别?
Handler就是android中一个机制,主要是考虑到线程安全的! Handler是可以实现线程间通信的,LZ知道Android的UI线程不安全的吧,也就是说不可以在UI线程以外的其他线程对UI进行 ...
- iOS程序的启动原理
一.在一些老的项目中,有很多不是通过代码添加窗口和跟控制器.是通过设置MainInterface(设置最主要的xib),在xib中通过图形化的操作设置应用程序的代理->设置窗口->设置根控 ...
- 课时91.CSS元素显示模式(掌握)
在HTML中HTML将所有的标签分为两类,分别是容器级和文本级 在CSS中CSS也将所有的标签分为两类,分别是块级元素和行内元素 1.什么是块级元素,什么是行内元素? 块级元素会独占一行 行内元素不会 ...
- Oracle客户端与Toad、plsql developer安装
(一)oracle client与oracle instant client比较 当我们要使用Toad.plsql developer等工具连接数据库时,首先需要在自己的电脑上安装oracle cli ...
- PL/SQL语句快捷输入设置
设置PL/SQL语句快捷输入的方法,让你成为高效率的人. 1.打开PL/SQL,输入用户并登录 2.并打开Tools->Preferences->Editor->AutoReplac ...
- python之selectors
selectors是select模块的包装器,ptython文档建议大部分情况使用selectors而不是直接使用selectors 样例代码如下 # -*- coding: utf-8 -*- __ ...
- Struts2知识点小结(四)--拦截器与注解开发
一.Struts2的拦截器(interceptor) 作用:当请求进入struts2框架后(进入之前可以用filter进行拦截),想对请求进行拦截操作(功能增强.权限控制),需要拦截器组件 1.str ...