13. Roman to Integer

题目

Given a roman numeral, convert it to an integer.

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

Subscribe to see which companies asked this question


翻译

给定一个罗马数字,将它转换成整数。


思路

罗马数字的含义:

I->1;
V->5;
X->10;
L->50;
C->100;
D->500;
M->1000;

首先需要找出数字规律:
1.当左边位数大于右边位数时,只需要将数字相加即可;
2.若左边数字小于右边数字,则需要将数字相减。


源码

/**
 * @param {string} s
 * @return {number}
 */
var romanToInt = function(s) {
    if(s.length==1) return toNumber(s);

    var ret=toNumber(s[0]);
    for(var i=1;i<s.length;i++){
        if(toNumber(s[i-1])<toNumber(s[i])){
            ret=ret+toNumber(s[i])-2*toNumber(s[i-1]);
        }else{
            ret=ret+toNumber(s[i]);
        }
    }
     return ret;
}

function toNumber(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;
    }
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值