首页 > 其他 > 详细

[string]Roman to Integer

时间:2015-12-06 20:54:46      阅读:238      评论:0      收藏:0      [点我收藏+]

Given a roman numeral, convert it to an integer.

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

罗马数字是阿拉伯数字传入之前使用的一种数码。罗马数字采用七个罗马字母作数字、即Ⅰ(1)、X(10)、C(100)、M(1000)、V(5)、L(50)、D(500)。记数的方法:
  1. 相同的数字连写,所表示的数等于这些数字相加得到的数,如 Ⅲ=3;
  2. 小的数字在大的数字的右边,所表示的数等于这些数字相加得到的数,如 Ⅷ=8、Ⅻ=12;
  3. 小的数字(限于 Ⅰ、X 和 C)在大的数字的左边,所表示的数等于大数减小数得到的数,如 Ⅳ=4、Ⅸ=9;
  4. 在一个数的上面画一条横线,表示这个数增值 1,000 倍,如=5000。
class Solution {
public:
    int romanToInt(string s) {
        // Ⅰ(1)、X(10)、C(100)、M(1000)、V(5)、L(50)、D(500)
        int values[26] ={
            0,0,100,500,0,0,0,0,1,0,0,50,1000,0,0,0,0,0,0,0,0,5,0,10,0,0
        };
        int size = s.size();
        int res = 0;
        for(int i=0;i<size;i++){
            if(i+1<size){
                if(values[s[i]-A] >= values[s[i+1]-A])
                    res += values[s[i]-A];
                else
                    res -= values[s[i]-A];
            }else{
                res += values[s[i]-A];
            }
        }
        return res;
    }
};

 

[string]Roman to Integer

原文:http://www.cnblogs.com/zengzy/p/5024212.html

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