码迷,mamicode.com
首页 > 其他好文 > 详细

Roman to Integer

时间:2015-06-06 11:52:28      阅读:114      评论:0      收藏:0      [点我收藏+]

标签:

技术分享
 1 class Solution {
 2 public:
 3     int romanToInt(string s) {
 4         int i,len=s.size();
 5         int dig[20];
 6         for(i=0;i<len;i++)
 7         {
 8             if(s[i]==I)
 9                 dig[i]=1;
10             if(s[i]==V)
11                 dig[i]=5;
12             if(s[i]==X)
13                 dig[i]=10;
14             if(s[i]==L)
15                 dig[i]=50;
16             if(s[i]==C)
17                 dig[i]=100;
18             if(s[i]==D)
19                 dig[i]=500;
20             if(s[i]==M)
21                 dig[i]=1000;
22         }
23         int ans=0,cur=dig[0];
24         for(i=1;i<len;i++)
25         {
26             if(dig[i]<=dig[i-1])
27             {
28                 ans+=cur;
29             }
30             else
31             {
32                 ans-=cur;
33             }
34             cur=dig[i];
35         }
36         ans+=cur;
37         return ans;
38     }
39 };
View Code

罗马数字中I =1, V=5,X=10, L=50, C=100,D=500,M=1000;

小数字放在大数字右边是相加,如VII是7,小数字放在大数字左边是相减,如IX=9。

根据数字的组成原则,先表示大数字,在表示小数字,如3999,先表示3000 MMM,再表示900 CM,再表示90 XC,再表示9 IX

所以从左到右遍历,若右边的数字小于等于当前数,则加上当前数,若右边的数字大于等于当前数,则减去当前数

Roman to Integer

标签:

原文地址:http://www.cnblogs.com/varcom/p/4556385.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!