JSFiddle - React, Tailwind, and code Playground

by Steven Senkus

JavaScript

/**
 * @param {string} s
 * @return {number}
 */
var romanToInt = function(s) {
    let int = 0;
    while (str.indexOf('M') === 0) {
        int += 1000;
        str = str.substring(1);
    }
    if (str.indexOf('CM') === 0) {
        int += 900;
        str = str.substring(2);
    }
    if (str.indexOf('CD') === 0) {
        int += 400;
        str = str.substring(2);
    }
    if (str.indexOf('D') === 0) {
        int += 500;
        str = str.substring(1);
    }
    while (str.indexOf('C') === 0) {
        int += 100;
        str = str.substring(1);
    }

    if (str.indexOf('XC') === 0) {
        int += 90;
        str = str.substring(2);
    }
    if (str.indexOf('XL') === 0) {
        int += 40;
        str = str.substring(2);
    }
    if (str.indexOf('L') === 0) {
        int += 50;
        str = str.substring(1);
    }
    while (str.indexOf('X') === 0) {
        int += 10;
        str = str.substring(1);
    }

    if (str.indexOf('IX') === 0) {
        int += 9;
        str = str.substring(2);
    }
    if (str.indexOf('IV') === 0) {
        int += 4;
        str = str.substring(2);
    }
    if (str.indexOf('V') === 0) {
        int += 5;
        str = str.substring(1);
    }
    while (str.indexOf('I') === 0) {
        int += 1;
        str = str.substring(1);
    }

    return int;
};

let str;
str = 'MMMCMXCIV';
console.log(str, romanToInt(str));
str = 'MMMCDXCIV';
console.log(str, romanToInt(str));
str = 'MCCLXX';
console.log(str, romanToInt(str));