首页 > 代码库 > [LeetCode OJ] Roman to Integer

[LeetCode OJ] Roman to Integer

Given a roman numeral, convert it to an integer.

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

 

下面是百度得到的关于罗马数的解释:

 

我的代码:

 1 class Solution { 2 public: 3     int romanToInt(string s) { 4         map<char,int> conversion; 5         conversion.insert(make_pair(I,1)); 6         conversion.insert(make_pair(V,5)); 7         conversion.insert(make_pair(X,10)); 8         conversion.insert(make_pair(L,50)); 9         conversion.insert(make_pair(C,100));10         conversion.insert(make_pair(D,500));11         conversion.insert(make_pair(M,1000));12         int ans=0;13         for(unsigned i=0; i<s.size(); i++)14         {15             if(s[i]==V || s[i]==L || s[i]==D) //不能把基本数字V 、L 、D 中的任何一个作为小数放在大数的左边采用相减的方法构成数目16                 ans += conversion[s[i]];17             else   //基本数字Ⅰ、X 、C 中的任何一个,自身连用构成数目,或者放在大数的右边连用构成数目,都不能超过三个;放在大数的左边只能用一个18             {19                 if(i<s.size()-1 && conversion[s[i]]<conversion[s[i+1]])20                 {21                     ans += conversion[s[i+1]]-conversion[s[i]];22                     i++;23                 }24                 else25                     ans += conversion[s[i]];26             }27         }28         return ans;29     }30 };