`

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解决方案

    cpp-算法精粹

    Integer to Roman Roman to Integer Count and Say Anagrams Valid Anagram Simplify Path Length of Last Word Isomorphic Strings Word Pattern 栈和队列 栈 Min Stack Valid Parentheses Longest Valid ...

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

    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

    Leetcode回文串拼接-leetcode_note:用于记录leetcode题目的解析

    Integer 8.String To Integer 9.Palindrome Number 10.String To Integer 11.Container With Most Water 12.Integer To Roman 13.Roman To Integer 289 347 380 442 457 Circular Array Loop 535 Encode and Decode ...

    leetcode2sumc-leetcode:JavaScript版本leetcode中文版代码

    Integer 简单 8 String to Integer (atoi) 中等 9 Palindrome Number 简单 11 Container With Most Water 中等 12 Integer to Roman 中等 13 Roman to Integer 简单 14 Longest Common Prefix 简单 15 3Sum 中等 16 ...

    leetcode338-LeetCode:LeetCode刷题总结

    Integer 8.String to Integer (atoi) 9.Palindrome Number 10.Regular Expression Matching 11.Container With Most Water 12.Integer to Roman 13.Roman to Integer 14.Longest Common Prefix (Trie树待完成) 15.3...

    lrucacheleetcode-leetcode:leetcode

    Integer 9. Palindrome Number 11. Container With Most Water 12. Integer to Roman 13. Roman to Integer 14. Longest Common Prefix 15. 3Sum 20. Valid Parentheses 21. Merge Two Sorted Lists 22. Generate ...

    分割数组求最大差值leetcode-Leetcode-Road:LeetCode刷题记录

    Integer 33.2% 简单 8 String to Integer (atoi) 18.5% 中等 9 Palindrome Number 56.7% 简单 10 Regular Expression Matching 25.3% 困难 11 Container With Most Water 59.3% 中等 12 Integer to Roman 61.8% 中等...

    leetcode中国-leetcode:leetcode刷题

    to Integer (atoi) addBinary longestPalindrome maximal rectangle :dp问题,较难 largestRectangleArea 求直方图的最大面积,左右两次扫面+剪枝优化 Valid Parentheses 用栈判断括号匹配 Regular Expression ...

    leetcode跳跃-LeCode:乐科

    Integer 整数反转 8. String to Integer (atoi) 字符串转换整数 (atoi) 9. Palindrome Number 回文数 10. Regular Expression Matching 正则表达式匹配 11. Container With Most Water 盛最多水的容器 12. Integer ...

    土坯

    3999)之内的整数,该应用程序将给出Roman值先决条件总览该应用程序支持以下查询输入:localhost:8080 /输出: Welcome to the Application that converts Integer to Roman输入:localhost:8080 / romannumeral?...

    LeetCode最全代码

    462 | [Minimum Moves to Equal Array Elements II](https://leetcode.com/problems/minimum-moves-to-equal-array-elements-ii/) | [C++](./C++/minimum-moves-to-equal-array-elements-ii.cpp) [Python](./Python/...

    Flamg:火焰——青春的火焰在熊熊燃烧

    Flamg The flames of youth are raging. 解题口诀 动规递归是神器, 全无用处想哈希。... Integer to Roman][23]][24] [![13. Roman to Integer][25]][26] [![14. Longest Common Prefix][27]][28] [!

    leetcode题库-LeetCode:力码

    Integer.cpp 9 回文数 Palindrome Number.cpp 12 整数转罗马数字 Integer to Roman.cpp 13 罗马数字转整数 Roman to Integer.cpp 15 三数之和 3Sum.cpp 最接近的三数之和 3Sum Closest .cpp 20 有效的括号 Valid ...

    leetcode-integer_to_roman

    leetcode-integer_to_roman

    leetcode卡-LeetCode:LeetCode题解

    Integer(atoi) :star: :star: :star: 注意细节,溢出 ---- strlen :star: :star: :star: const char,size_t类型 ---- strcpy :star: :star: :star: 字符串复制,返回值,赋值语句 0028 strStr :star: :star: :star:...

    qycl50224#leetcode#13. 罗马数字转整数 Roman to Integer1

    13. 罗马数字转整数 Roman to Integer用哈希存储映射字符--->对映的值对字符串的字符挨个判断,考虑下一个字符如果下一个字符大于当前字符,su

Global site tag (gtag.js) - Google Analytics