3/30/2014

Leetcode -- Roman to Integer

Solution 03/30/2014
class Solution {  
 public:  
   int romanToInt(string s) {  
     if (s.empty()) {  
       return 0;  
     }  
     std::unordered_map<char, int> map{  
      {'I', 1},  
      {'V',5},  
      {'X', 10},  
      {'L', 50},  
      {'C', 100},  
      {'D', 500},  
      {'M', 1000}  
     };  
     int result = 0;  
     int n = s.length();  
     int last = map[s[n - 1]];  
     result += last;  
     for(int i = n - 2; i >=0; i--) {  
       int num = map[s[i]];  
       if(num >= last) {  
         result += num;  
       } else {  
         result -= num;  
       }  
       last = num;  
     }  
     return result;  
   }  
 };  

No comments: