`

Integer to Roman

阅读更多
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。

我们用递归来解决这个问题,代码如下:
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 "";
    }
}
分享到:
评论

相关推荐

    Roman to Integer完整代码

    leetcode上Roman to Integer的完整C++代码,已被accepted

    LeetCode Roman to Integer解决方案

    LeetCode Roman to Integer解决方案

    java-leetcode题解之012-Integer-to-Roman

    java入门 java_leetcode题解之012_Integer_to_Roman

    js-leetcode题解之12-integer-to-roman.js

    js js_leetcode题解之12-integer-to-roman.js

    C语言-leetcode题解之12-integer-to-roman.c

    c语言入门 C语言_leetcode题解之12-integer-to-roman.c

    LeetCode 刷题汇总1

    * 整数到罗马(Integer to Roman):将整数转换为罗马数字。 * 罗马到整数(Roman to Integer):将罗马数字转换为整数。 4. 链表操作: * 删除链表中的重复项(Remove Duplicates from Sorted Array):删除链表...

    Leetcode部分解答(126题)

    6. **Integer to Roman.cpp** - 第40题,与“Roman to Integer”相反,这个任务是将整数转换为罗马数字。解冑需理解罗马数字的构造规则。 7. **Implement strStr().cpp** - 第28题,实现字符串查找功能,即在一个...

    LeetCode前400题Java精美版

    12. **Integer to Roman** (Medium): 整数转换为罗马数字。需要对罗马数字系统有深入理解,并建立对应的转换规则。 13. **Roman to Integer** (Easy): 罗马数字转换为整数。通过建立罗马数字与数值的对应关系,逐...

    leetcode刷题记录,包含代码和思路讲解,非常详细

    12._INTEGER TO ROMAN_(整数转换为罗马数字) 题目描述:给定一个整数,将其转换为罗马数字。 知识点:数字处理、罗马数字 思路:使用罗马数字规则,将整数转换为罗马数字。 13._ROMAN TO INTEGER_(罗马数字转换...

    c#-Leetcode面试题解之第12题整数转罗马数字.zip

    这道题目是LeetCode中的第12题,名为“整数转罗马数字”(Integer to Roman)。这个题目的目标是将一个整数转换成其对应的罗马数字表示。 罗马数字是一种古老的数字系统,它使用一组特定的字母来表示数值。在罗马...

    LeetCode答案大全

    12. Integer to Roman:将整数转换为罗马数字。 13. Roman to Integer:将罗马数字转换为整数。 14. Longest Common Prefix:求多个字符串的最长公共前缀。 15. 3Sum:找到数组中所有和为0的不重复的三个数的组合...

    leetcode530-algorithm:算法

    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...

    leetcode_python

    12. Integer to Roman(整数转罗马数字) 知识点:数值转换、映射关系 要求将整数转换为罗马数字表示,需要了解罗马数字的构成规则,并建立整数与罗马数字间的映射关系。 13. Roman to Integer(罗马数字转整数)...

    Leetcode book刷题必备

    36. Integer to Roman:整数转换成罗马数字。 37. Roman to Integer:罗马数字转换成整数。 38. Clone Graph:深度复制一个图。 【栈】 39. Min Stack:设计一个栈,支持 push、pop、top 操作,并且在常数时间内...

    CleanCodeHandbook_v1.0.3

    - Integer to Roman(整数转罗马数字) 9. Stack(栈): 栈是一种后进先出(LIFO)的数据结构,它有两个主要操作:push(压栈)和pop(出栈)。文件中提到了栈相关的算法: - Min Stack(最小栈) - Evaluate ...

    Leetcode部分试题解析

    9. **Roman to Integer** 和 **Integer to Roman**:罗马数字与整数之间的转换。需要掌握罗马数字的规则,并设计相应的转换算法。 10. **Nim Game**:Nim游戏策略分析。这涉及到博弈论,理解游戏的胜负条件并找出...

    leetcode双人赛-LeetCode:力扣笔记

    Integer 简单 字串 String to Integer (atoi) 中等 字串 麻烦 Palindrome Number 简单 字串 Container With Most Water 中等 动态规划 重要 Integer to Roman 中等 重要 Roman to Integer 简单 重要 Longest Common ...

    leetcodepython001-algorithm:leetcode问题(cpp、java、python),书籍破解_the_coding

    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

Global site tag (gtag.js) - Google Analytics