罗马数字转整数

罗马数字转整数

徐徐
算法
发布于2023-09-24 20:44:07
🌺前言
三种处理罗马数字转整数的方法

方法1

javascript
/**
 * @param {string} s
 * @return {number}
 */
var romanToInt = function (s) {
    const spec = {
        IV: 4,
        IX: 9,
        XL: 40,
        XC: 90,
        CD: 400,
        CM: 900
    }
    const valueMap = {
        I: 1,
        V: 5,
        X: 10,
        L: 50,
        C: 100,
        D: 500,
        M: 1000
    }
    const arr = s.split('')
    let i = 0
    let sum = 0
    while (i<arr.length) {
        const key1 = arr[i]
        const key2 = arr[i + 1]
        const key = key1 + key2
        if (key1 && key2 && spec[key]) {
            sum += spec[key]
            i = i + 2
        } else {
            sum += valueMap[key1]
            i++
           
        }
    }
    return sum
    
};

方法2

javascript
/**
 * @param {string} s
 * @return {number}
 */
var romanToInt = function (s) {
    const valueMap = {
        I: 1,
        V: 5,
        X: 10,
        L: 50,
        C: 100,
        D: 500,
        M: 1000
    }
    let sum = 0
    let x = 0
    let y = 0
    for(let i =s.length-1;i>=0;i--){
        x = valueMap[s[i]]
        if(y<=x){
            sum+=x
        }else{
            sum-=x
        }
        y = x
    }
    return sum
};

方法3

javascript
/**
 * @param {string} s
 * @return {number}
 */
var romanToInt = function (s) {
    let sum = 0
    const valueMap = {
        I: 1,
        V: 5,
        X: 10,
        L: 50,
        C: 100,
        D: 500,
        M: 1000,
        a: 4,
        b: 9,
        c: 40,
        d: 90,
        e: 400,
        f: 900
    }
    s = s.replace('IV', 'a')
    s = s.replace('IX', 'b')
    s = s.replace('XL', 'c')
    s = s.replace('XC', 'd')
    s = s.replace('CD', 'e')
    s = s.replace('CM', 'f')
    for(i=0;i<s.length;i++){
        sum+=valueMap[s[i]]
    }
    return sum
};

目录

文章最后更新于 2024-08-30 16:50:42
留言
暂无数据

~~空空如也