Leetcode第12题:Integer to Roman

题目地址:Integer to Roman


题目简介:将整数转换为特定的罗马字符串,这里还有一些特定的规则

Symbol       Value
I             1
IV            4
V             5
IX            9
X             10
XL            40
L             50
XC            90
C             100
CD            400
D             500
CM            900
M             1000

题目分析:假如整数能够减去一个数,那么除以这个数必然大于等于1,那么剩下的就剩下暴力了。


C++版:

class Solution {
public:
    string intToRoman(int num) {
        string ans = "";
        while (num != 0)
        {
            if (divide(num, 1000))
            {
                ans += "M";
                num -= 1000;
            }
            else if (divide(num, 900))
            {
                ans += "CM";
                num -= 900;
            }
            else if (divide(num, 500))
            {
                ans += "D";
                num -= 500;
            }
            else if (divide(num, 400))
            {
                ans += "CD";
                num -= 400;
            }
            else if (divide(num, 100))
            {
                ans += "C";
                num -= 100;
            }
            else if (divide(num, 90))
            {
                ans += "XC";
                num -= 90;
            }
            else if (divide(num, 50))
            {
                ans += "L";
                num -= 50;
            }
            else if (divide(num, 40))
            {
                ans += "XL";
                num -= 40;
            }
            else if (divide(num, 10))
            {
                ans += "X";
                num -= 10;
            }
            else if (divide(num, 9))
            {
                ans += "IX";
                num -= 9;
            }
            else if (divide(num, 5))
            {
                ans += "V";
                num -= 5;
            }
            else if (divide(num, 4))
            {
                ans += "IV";
                num -= 4;
            }
            else if (divide(num, 1))
            {
                ans += "I";
                num -= 1;
            }
        }
        return ans;
    }
    bool divide(int num1, int num2)
    {
        if (num1 / num2 >= 1)
            return true;
        return false;
    }
};

Java版本:

class Solution {
    public String intToRoman(int num) {
        String ans = "";
        while (num != 0)
        {
            if (num / 1000 >= 1)
            {
                ans += "M";
                num -= 1000;
            }
            else if (num / 900 >= 1)
            {
                ans += "CM";
                num -= 900;
            }
            else if (num / 500 >= 1)
            {
                ans += "D";
                num -= 500;
            }
            else if (num / 400 >= 1)
            {
                ans += "CD";
                num -= 400;
            }
            else if (num / 100 >= 1)
            {
                ans += "C";
                num -= 100;
            }
            else if (num / 90 >= 1)
            {
                ans += "XC";
                num -= 90;
            }
            else if (num / 50 >= 1)
            {
                ans += "L";
                num -= 50;
            }
            else if (num / 40 >= 1)
            {
                ans += "XL";
                num -= 40;
            }
            else if (num / 10 >= 1)
            {
                ans += "X";
                num -= 10;
            }
            else if (num / 9 >= 1)
            {
                ans += "IX";
                num -= 9;
            }
            else if (num / 5 >= 1)
            {
                ans += "V";
                num -= 5;
            }
            else if (num / 4 >= 1)
            {
                ans += "IV";
                num -= 4;
            }
            else if (num >= 1)
            {
                ans += "I";
                num -= 1;
            }
        }
        return ans;
    }
}

Python版:

class Solution:
    def intToRoman(self, num: int) -> str:
        ans = ""
        while(num > 0):
            if (num / 1000 >= 1):
                ans += "M"
                num -= 1000
            elif (num / 900 >= 1):
                ans += "CM"
                num -= 900
            elif (num / 500 >= 1):
                ans += "D"
                num -= 500
            elif (num / 400 >= 1):
                ans += "CD"
                num -= 400
            elif (num / 100 >= 1):
                ans += "C"
                num -= 100
            elif (num / 90 >= 1):
                ans += "XC"
                num -= 90
            elif (num / 50 >= 1):
                ans += "L"
                num -= 50
            elif (num / 40 >= 1):
                ans += "XL"
                num -= 40
            elif (num / 10 >= 1):
                ans += "X"
                num -= 10
            elif (num / 9 >= 1):
                ans += "IX"
                num -= 9
            elif (num / 5 >= 1):
                ans += "V"
                num -= 5
            elif (num / 4 >= 1):
                ans += "IV"
                num -= 4
            elif (num >= 1):
                ans += "I"
                num -= 1
        return ans

猜你喜欢

转载自blog.csdn.net/chao_shine/article/details/88361875