首页 > 其他 > 详细

[LeetCode OJ] Roman to Integer

时间:2014-07-16 17:59:54      阅读:324      评论:0      收藏:0      [点我收藏+]

Given a roman numeral, convert it to an integer.

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

 

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

bubuko.com,布布扣

 

我的代码:

 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                 else
25                     ans += conversion[s[i]];
26             }
27         }
28         return ans;
29     }
30 };

 

[LeetCode OJ] Roman to Integer,布布扣,bubuko.com

[LeetCode OJ] Roman to Integer

原文:http://www.cnblogs.com/Marrybe/p/3847409.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!