LeetCode 13 罗马数字转换为int型
1 class Solution { 2 public: 3 /* 4 string M[] = {"", "M", "MM", "MMM"}; //千位,从1000到3000 5 string C[] = {"", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM"}; //百位,从100到900 6 string X[] = {"", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC"}; //十位,从10到90 7 string I[] = {"", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"}; //个位,从1到9 8 */ 9 int romanToInt(string s){ 10 int result = switchNum(s[0]); 11 for(int i=1; i<s.size(); ++i){ 12 if(switchNum(s[i-1]) < switchNum(s[i])){ 13 //比如CD 遍历到C的时候已经加过100了,所以遍历到D的时候需要减两次100 14 result += switchNum(s[i]) - 2*switchNum(s[i-1]); 15 }else{ 16 result += switchNum(s[i]); 17 } 18 } 19 return result; 20 } 21 int switchNum(char c){ 22 switch (c){ 23 case 'I': return 1; 24 case 'V': return 5; 25 case 'X': return 10; 26 case 'L': return 50; 27 case 'C': return 100; 28 case 'D': return 500; 29 case 'M': return 1000; 30 default: 31 return 0; 32 } 33 } 34 };