代码改变世界

[LeetCode #13] Roman to Integer

2016-10-01 21:51  amadis  阅读(129)  评论(0编辑  收藏  举报

Given a roman numeral, convert it to an integer.

Input is guaranteed to be within the range from 1 to 3999.

 

 1 int c2n(char c){
 2     switch (c){
 3         case 'I': return 1; 
 4         case 'V': return 5;  
 5         case 'X': return 10;  
 6         case 'L': return 50;  
 7         case 'C': return 100;  
 8         case 'D': return 500;  
 9         case 'M': return 1000;  
10         default: return 0;  
11     }  
12 }
13 
14 int romanToInt(char* s) {
15     int result = 0;
16     for(int i = 0; i < strlen(s); i++){
17         if ( i>0 && (c2n(s[i]) > c2n(s[i-1]))){
18             result += (c2n(s[i]) - 2 * c2n(s[i-1]));
19         }else{
20             result += c2n(s[i]);   
21         }
22     }
23     
24     return result;
25 }