- 浏览: 183304 次
- 性别:
- 来自: 济南
文章分类
最新评论
Given an integer, convert it to a roman numeral.
Input is guaranteed to be within the range from 1 to 3999.
解决这道题目的关键在于了解罗马数字的规则。罗马数字共有7个,即I(1),V(5),X(10),L(50),C(100),D(500),M(1000)。相同的1个罗马数字重复几次,就表示这个数的几倍。例如III为3,并且重复的数字不能超过三位。另外一个规则是右加左减规则:在一个较大的罗马数字的右边记上一个较小的罗马数字,表示大数字加小数字。在一个较大的数字的左边记上一个较小的罗马数字,表示大数字减小数字。但是,左减不能跨越一个位数。比如,99不可以用IC表示,而是用XCIX表示。此外,左减数字不能超过1位,比如8写成VIII,而非IIX。同理,右加数字不能超过3位,比如14写成XIV,而非XIIII。
我们用递归来解决这个问题,代码如下:
Input is guaranteed to be within the range from 1 to 3999.
解决这道题目的关键在于了解罗马数字的规则。罗马数字共有7个,即I(1),V(5),X(10),L(50),C(100),D(500),M(1000)。相同的1个罗马数字重复几次,就表示这个数的几倍。例如III为3,并且重复的数字不能超过三位。另外一个规则是右加左减规则:在一个较大的罗马数字的右边记上一个较小的罗马数字,表示大数字加小数字。在一个较大的数字的左边记上一个较小的罗马数字,表示大数字减小数字。但是,左减不能跨越一个位数。比如,99不可以用IC表示,而是用XCIX表示。此外,左减数字不能超过1位,比如8写成VIII,而非IIX。同理,右加数字不能超过3位,比如14写成XIV,而非XIIII。
我们用递归来解决这个问题,代码如下:
public class Solution { public String intToRoman(int num) { if(num == 0) return ""; if(num >= 1000) return "M" + intToRoman(num - 1000); if(num >= 900) return "CM" + intToRoman(num - 900); if(num >= 500) return "D" + intToRoman(num - 500); if(num >= 400) return "CD" + intToRoman(num - 400); if(num >= 100) return "C" + intToRoman(num - 100); if(num >= 90) return "XC" + intToRoman(num - 90); if(num >= 50) return "L" + intToRoman(num - 50); if(num >= 40) return "XL" + intToRoman(num - 40); if(num >= 10) return "X" + intToRoman(num - 10); if(num >= 9) return "IX" + intToRoman(num - 9); if(num >= 5) return "V" + intToRoman(num - 5); if(num >= 4) return "IV" + intToRoman(num - 4); if(num >= 1) return "I" + intToRoman(num - 1); return ""; } }
发表评论
-
498. Diagonal Traverse
2019-11-15 13:52 264Given a matrix of M x N eleme ... -
496 Next Greater Element I
2019-11-14 13:50 266You are given two arrays (witho ... -
Word Break II
2016-03-09 03:15 382Given a string s and a dictiona ... -
Insert Interval
2016-03-08 02:11 373Given a set of non-overlapping ... -
Merge Intervals
2016-03-07 05:25 497Given a collection of intervals ... -
Merge k Sorted Lists
2016-03-07 04:03 562Merge k sorted linked lists and ... -
Multiply Strings
2016-03-06 07:27 474Given two numbers represented a ... -
N-Queens II
2016-03-06 03:06 662Follow up for N-Queens problem. ... -
N-Queens
2016-03-06 02:47 468The n-queens puzzle is the prob ... -
First Missing Positive
2016-03-05 03:09 428Given an unsorted integer array ... -
Spiral Matrix
2016-03-04 03:39 573Given a matrix of m x n element ... -
Trapping Rain Water
2016-03-04 02:54 580Given n non-negative integers r ... -
Repeated DNA Sequences
2016-03-03 03:10 425All DNA is composed of a series ... -
Increasing Triplet Subsequence
2016-03-02 02:48 895Given an unsorted array return ... -
Maximum Product of Word Lengths
2016-03-02 01:56 928Given a string array words, fin ... -
LRU Cache
2016-02-29 10:37 602Design and implement a data str ... -
Super Ugly Number
2016-02-29 07:07 672Write a program to find the nth ... -
Longest Increasing Path in a Matrix
2016-02-29 05:56 841Given an integer matrix, find t ... -
Coin Change
2016-02-29 04:39 781You are given coins of differen ... -
Minimum Height Trees
2016-02-29 04:11 704For a undirected graph with tre ...
相关推荐
leetcode上Roman to Integer的完整C++代码,已被accepted
LeetCode Roman to Integer解决方案
java入门 java_leetcode题解之012_Integer_to_Roman
js js_leetcode题解之12-integer-to-roman.js
c语言入门 C语言_leetcode题解之12-integer-to-roman.c
* 整数到罗马(Integer to Roman):将整数转换为罗马数字。 * 罗马到整数(Roman to Integer):将罗马数字转换为整数。 4. 链表操作: * 删除链表中的重复项(Remove Duplicates from Sorted Array):删除链表...
6. **Integer to Roman.cpp** - 第40题,与“Roman to Integer”相反,这个任务是将整数转换为罗马数字。解冑需理解罗马数字的构造规则。 7. **Implement strStr().cpp** - 第28题,实现字符串查找功能,即在一个...
12. **Integer to Roman** (Medium): 整数转换为罗马数字。需要对罗马数字系统有深入理解,并建立对应的转换规则。 13. **Roman to Integer** (Easy): 罗马数字转换为整数。通过建立罗马数字与数值的对应关系,逐...
12._INTEGER TO ROMAN_(整数转换为罗马数字) 题目描述:给定一个整数,将其转换为罗马数字。 知识点:数字处理、罗马数字 思路:使用罗马数字规则,将整数转换为罗马数字。 13._ROMAN TO INTEGER_(罗马数字转换...
这道题目是LeetCode中的第12题,名为“整数转罗马数字”(Integer to Roman)。这个题目的目标是将一个整数转换成其对应的罗马数字表示。 罗马数字是一种古老的数字系统,它使用一组特定的字母来表示数值。在罗马...
12. Integer to Roman:将整数转换为罗马数字。 13. Roman to Integer:将罗马数字转换为整数。 14. Longest Common Prefix:求多个字符串的最长公共前缀。 15. 3Sum:找到数组中所有和为0的不重复的三个数的组合...
Integer 008 String to Integer (atoi) 009 Palindrome Number 010 Regular Expression Matching 011 Container With Most Water 012 Integer to Roman 013 Roman to Integer 014 Longest Common Prefix 015 3Sum ...
36. Integer to Roman:将整数转换为罗马数字。 37. Roman to Integer:将罗马数字转换为整数。 38. Clone Graph:复制一个无向图。 39. Min Stack:设计一个栈,支持获取栈内最小元素的操作。 40. Evaluate Reverse...
12. Integer to Roman(整数转罗马数字) 知识点:数值转换、映射关系 要求将整数转换为罗马数字表示,需要了解罗马数字的构成规则,并建立整数与罗马数字间的映射关系。 13. Roman to Integer(罗马数字转整数)...
36. Integer to Roman:整数转换成罗马数字。 37. Roman to Integer:罗马数字转换成整数。 38. Clone Graph:深度复制一个图。 【栈】 39. Min Stack:设计一个栈,支持 push、pop、top 操作,并且在常数时间内...
- Integer to Roman(整数转罗马数字) 9. Stack(栈): 栈是一种后进先出(LIFO)的数据结构,它有两个主要操作:push(压栈)和pop(出栈)。文件中提到了栈相关的算法: - Min Stack(最小栈) - Evaluate ...
9. **Roman to Integer** 和 **Integer to Roman**:罗马数字与整数之间的转换。需要掌握罗马数字的规则,并设计相应的转换算法。 10. **Nim Game**:Nim游戏策略分析。这涉及到博弈论,理解游戏的胜负条件并找出...
Integer 简单 字串 String to Integer (atoi) 中等 字串 麻烦 Palindrome Number 简单 字串 Container With Most Water 中等 动态规划 重要 Integer to Roman 中等 重要 Roman to Integer 简单 重要 Longest Common ...
Integer 008. String to Integer 009. Palindrome Number 010. Regular Expression Matching 011. Container With Most Water 012. Integer to Roman 013. Roman to Integer 014. Longest Common Prefix 019. R