12. 整数转罗马数字

简介: 12. 整数转罗马数字

题目描述

给你一个整数,转成罗马数字。


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


I 1

V 5

X 10

L 50

C 100

D 500

M 1000


通常情况下,罗马数字中小的数字在大的数字的右边。


特殊情况:


I 可以放在 V (5) 和 X (10) 的左边,来表示 4 和 9。

X 可以放在 L (50) 和 C (100) 的左边,来表示 40 和 90。

C 可以放在 D (500) 和 M (1000) 的左边,来表示 400 和 900。

解题思路

枚举


我们每次取不超过它(罗马数字对应的整数)的最大值,不断的减它。直到0截止。

代码

class Solution {
public:
    string intToRoman(int num) {
        //枚举
        vector<int> sub={1,4,5,9,10,40,50,90,100,400,500,900,1000};
        int n=sub.size();
        unordered_map<int,string> hash={
            {1,"I"},
            {4,"IV"},
            {5,"V"},
            {9,"IX"},
            {10,"X"},
            {40,"XL"},
            {50,"L"},
            {90,"XC"},
            {100,"C"},
            {400,"CD"},
            {500,"D"},
            {900,"CM"},
            {1000,"M"}
        };
        string ret;
        int i=n-1;
        while(num)
        {
            while(sub[i]>num) i--;
            ret+=hash[sub[i]];
            num-=sub[i];
        }
        return ret;
    }
};
相关文章
|
2月前
12. 整数转罗马数字
12. 整数转罗马数字
30 0
|
1月前
13.罗马数字转整数
13.罗马数字转整数
|
1月前
|
算法
12.整数转罗马数字
12.整数转罗马数字
|
2月前
13. 罗马数字转整数
13. 罗马数字转整数
24 2
|
2月前
|
测试技术
【力扣】13. 罗马数字转整数、12. 整数转罗马数字
【力扣】13. 罗马数字转整数、12. 整数转罗马数字
|
11月前
LeetCode:13、罗马数字转整数
LeetCode:13、罗马数字转整数
|
12月前
|
Python
罗马数字转整数
罗马数字转整数
65 0
|
2月前
|
测试技术 C++
罗马数字转整数(C++)
罗马数字转整数(C++)
40 0
|
2月前
leetcode-13:罗马数字转整数
leetcode-13:罗马数字转整数
22 0
|
2月前
leetcode-12:整数转罗马数字
leetcode-12:整数转罗马数字
24 0