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 };