力扣12. 整数转罗马数字

Posted 幽殇默

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了力扣12. 整数转罗马数字相关的知识,希望对你有一定的参考价值。

在这里插入图片描述
https://leetcode-cn.com/problems/integer-to-roman/

class Solution {
public:
    string intToRoman(int num) {
		string  ans;
        int m_t=num/1000;
        for(int i=1;i<=m_t;i++) ans+="M";
        num=num%1000;
        if(num>=900) ans+="CM",num-=900;
        else if(num>=500) ans+="D",num-=500;
        
        if(num>=400) ans+="CD",num-=400;
        else
        {
            int t=num/100;
            num=num-t*100;
            for(int i=1;i<=t;i++) ans+="C";
        }


        if(num>=90) ans+="XC",num-=90;
        if(num>=50) ans+="L",num-=50;
        if(num>=40)
        {
            int t=num/40;
            num=num-t*40;
            for(int i=1;i<=t;i++) ans+="XL";
        }

        if(num>=10)
        {
            int t=num/10;
            num=num-t*10;
            for(int i=1;i<=t;i++) ans+="X";
        }


        if(num==9) ans+="IX",num-=9;
        if(num>=5) ans+="V",num-=5;
        if(num>=4)
        {
            int t=num/4;
            num=num-t*4;
            for(int i=1;i<=t;i++) ans+="IV";
        }
        if(num)
        {
            for(int i=1;i<=num;i++) ans+="I";
        }
        return ans;
    }
};
class Solution {
public:
    string intToRoman(int num) {
        int values[] = {
            1000,
            900, 500, 400, 100,
            90, 50, 40, 10,
            9, 5, 4, 1
        };
        string reps[] = {
            "M",
            "CM", "D", "CD", "C",
            "XC", "L", "XL", "X",
            "IX", "V", "IV", "I",
        };

        string res;
        for (int i = 0; i < 13; i ++ ) {
            while (num >= values[i]) {
                num -= values[i];
                res += reps[i];
            }
        }

        return res;
    }
};

以上是关于力扣12. 整数转罗马数字的主要内容,如果未能解决你的问题,请参考以下文章

力扣——整数转罗马数字

算法学习13. 罗马数字转整数(leetcode力扣 - java / rust)

算法学习13. 罗马数字转整数(leetcode力扣 - java / rust)

LeetCode 罗马数字转整数

力扣13. 罗马数字转整数

LeetCode12.整数转罗马数字