LeetCode题解——Roman to Integer

题目

将罗马数字转换为整数。

 

解法

可以参考上一篇数字转换为罗马数字的规则。

 

代码

 1 class Solution {
 2 public:
 3     int sym2int(char sym)  //罗马数字字符与数字的对应关系
 4     {   
 5         switch(sym)
 6         {   
 7             case 'I' : return 1;
 8             case 'V' : return 5;
 9             case 'X' : return 10; 
10             case 'L' : return 50; 
11             case 'C' : return 100;
12             case 'D' : return 500;
13             case 'M' : return 1000;
14             default  : return 0;
15         }   
16     }
17     
18     int romanToInt(string s) {
19         int result = sym2int(s[0]);
20         for(int i = 1; i < s.size(); ++i)
21         {   
22             result += sym2int(s[i]);
23             if(sym2int(s[i]) > sym2int(s[i-1]))  //如果当前字符比上一字符对应的值要大,说明这是一个减的过程,由于上一字符之前计算过,所以减2倍
24                 result -= 2 * sym2int(s[i-1]);
25         }   
26         return result;
27     }
28 };

 

posted @ 2014-06-03 16:25  阿杰的专栏  阅读(128)  评论(0编辑  收藏  举报