Roman to Integer
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"}.
//这道题找不到规律,初始做的极为丑陋
C++:
class Solution { public: int romanToInt(string s) { int i,num=str2num(s[0]),n=s.length(),t1,t2; for(i=1;i<n;i++) { t1=str2num(s[i-1]); t2=str2num(s[i]); if(t1<t2) { num += t2 - 2*t1; }else { num+=t2; } } return num; } int str2num(char& s) { switch(s) { 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; } } };