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;
    }
};
相关文章
|
6月前
12. 整数转罗马数字
12. 整数转罗马数字
52 0
|
3月前
|
Java
罗马数字转整数
这篇文章提供了一个Java方法,用于将罗马数字转换为整数,通过一个字符一个字符地解析罗马数字字符串并根据特定规则进行相应的加法或减法运算。
|
6月前
13. 罗马数字转整数
13. 罗马数字转整数
42 2
|
5月前
|
算法
12.整数转罗马数字
12.整数转罗马数字
|
5月前
13.罗马数字转整数
13.罗马数字转整数
|
6月前
|
测试技术
【力扣】13. 罗马数字转整数、12. 整数转罗马数字
【力扣】13. 罗马数字转整数、12. 整数转罗马数字
LeetCode:13、罗马数字转整数
LeetCode:13、罗马数字转整数
|
6月前
|
测试技术 C++
罗马数字转整数(C++)
罗马数字转整数(C++)
66 0
|
6月前
leetcode-13:罗马数字转整数
leetcode-13:罗马数字转整数
39 0
|
6月前
leetcode-12:整数转罗马数字
leetcode-12:整数转罗马数字
40 0