Given an integer, convert it to a roman numeral.
Input is guaranteed to be within the range from 1 to 3999.
把一个数字变成罗马数字,直接递归暴力,代码有点丑23333
class Solution {
public:
string intToRoman(int num) {
if(num >= 1000)
return "M" + intToRoman(num - 1000);
if(num <= 999 && num >= 900)
return "CM" + intToRoman(num - 900);
if(num <= 899 && num >= 800)
return "DCCC" + intToRoman(num - 800);
if(num <= 799 && num >= 700)
return "DCC" + intToRoman(num - 700);
if(num <= 699 && num >= 600)
return "DC" + intToRoman(num - 600);
if(num <= 599 && num >= 500)
return "D" + intToRoman(num - 500);
if(num <= 499 && num >= 400)
return "CD" + intToRoman(num - 400);
if(num <= 399 && num >= 300)
return "CCC" + intToRoman(num - 300);
if(num <= 299 && num >= 200)
return "CC" + intToRoman(num - 200);
if(num <= 199 && num >= 100)
return "C" + intToRoman(num - 100);
if(num <= 99 && num >= 90)
return "XC" + intToRoman(num - 90);
if(num <= 89 && num >= 80)
return "LXXX" + intToRoman(num - 80);
if(num <= 79 && num >= 70)
return "LXX" + intToRoman(num - 70);
if(num <= 69 && num >= 60)
return "LX" + intToRoman(num - 60);
if(num <= 59 && num >= 50)
return "L" + intToRoman(num - 50);
if(num <= 49 && num >= 40)
return "XL" + intToRoman(num - 40);
if(num <= 39 && num >= 30)
return "XXX" + intToRoman(num - 30);
if(num <= 29 && num >= 20)
return "XX" + intToRoman(num - 20);
if(num <= 19 && num >= 10)
return "X" + intToRoman(num - 10);
if(num == 9) return "IX";
if(num == 8) return "VIII";
if(num == 7) return "VII";
if(num == 6) return "VI";
if(num == 5) return "V";
if(num == 4) return "IV";
if(num == 3) return "III";
if(num == 2) return "II";
if(num == 1) return "I";
return "";
}
};
13是把罗马数值变成普通的数字233333,我直接贴别人的代码了233333
class Solution {
public:
int getVal(char a)
{
switch (a) {
case 'I':
return 1;
case 'V':
return 5;
case 'X':
return 10;
case 'L':
return 50;
case 'C':
return 100;
case 'D':
return 500;
case 'M':
return 1000;
}
return 0;
}
int romanToInt(string s)
{
int res = 0;
char max = 'I';
for (int i = s.size()-1; i >= 0; --i) {
if (getVal(s[i]) >= getVal(max)) {
max = s[i];
res += getVal(s[i]);
} else {
res -= getVal(s[i]);
}
}
return res;
}
};