首页 > 其他 > 详细

Roman to Integer_LeetCode

时间:2017-09-12 15:10:44      阅读:245      评论:0      收藏:0      [点我收藏+]

Decription:

Given a roman numeral, convert it to an integer.

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

 

解题思路:

将罗马数字的字符串转换成阿拉伯数字。

先来查阅资料了解一下罗马数字的计数方法:

技术分享

关键是(2)(3)两条准则。

因此主要的思想是逐个遍历字符串中的单个字符,先将当前字符代表的阿拉伯数字值加进总和中去,

再判断当前字符代表的值和上一个字符代表的值的大小,如果比上一个大,则减去上一个值的2倍。

同时,为了方便起见,用switch新定义了一个将单个罗马字符转换为数字的convert()函数。

 

 

代码:

class Solution {
public:
    int romanToInt(string s) {
        int result = convert(s[0]);
        for (int i = 1; i < s.length(); i++) {
            if (convert(s[i]) > convert(s[i-1])) {
                result = result + convert(s[i]) - 2*convert(s[i-1]);
            } else {
                result += convert(s[i]);
            }
        }
        return result;
    }
    int convert(char ch) {
        switch(ch) {
            case I: return 1;
            case V: return 5;
            case X: return 10;
            case L: return 50;
            case C: return 100;
            case D: return 500;
            case M: return 1000;
        }
    }
};

 

 

 

Roman to Integer_LeetCode

原文:http://www.cnblogs.com/SYSU-Bango/p/7509718.html

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