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

 

你可能感兴趣的:(LeetCode)