题目地址: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