Given a roman numeral, convert it to an integer.
Input is guaranteed to be within the range from 1 to 3999.
[罗马转整数]
/* 1~9: {"I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"}; 10~90: {"X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC"}; 100~900: {"C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM"}; 1000~3000: {"M", "MM", "MMM"}. */ class Solution { public: int toNum(char c) { switch(c){ 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 result = toNum(s[0]); int i; for(i=1; i < s.length(); i++) { if(toNum(s[i])<=toNum(s[i-1])){ result +=toNum(s[i]) ; } else if(toNum(s[i])>toNum(s[i-1])) { result +=toNum(s[i]) - 2*toNum(s[i-1]); } } return result; } };
Given an integer, convert it to a roman numeral.
Input is guaranteed to be within the range from 1 to 3999.
【整数转罗马】
class Solution { public: string intToRoman(int num) { string s=""; string roman[4][10]={{"","I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"}, {"", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC"}, {"","C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM"}, {"","M", "MM", "MMM"} }; int position = 0; while(0 < num) { s = roman[position][num%10] + s; position++; num = num / 10; } return s; } };