0

Roman to Integer - Algorithm JavaScript - Easy

1.Description

Given a roman numeral, convert it to an integer.

Example 1:

Input: s = "III"
Output: 3
Explanation: III = 3.

Example 2:

Input: s = "LVIII"
Output: 58
Explanation: L = 50, V= 5, III = 3.

Example 3:

Input: s = "MCMXCIV"
Output: 1994
Explanation: M = 1000, CM = 900, XC = 90 and IV = 4.

2.Solution

My algorithm

var romanToInt = function (s) {
    const romanNumber = {I: 1, V: 5, X: 10, L: 50, C: 100, D: 500, M: 1000};
    var result = 0;
    for (var i = 0; i < s.length; i++) {
    if (romanNumber[s[i]] < romanNumber[s[i + 1]]) {
        result = result + romanNumber[s[i + 1]] - romanNumber[s[i]];
        i++;
    } else {
        result = result + romanNumber[s[i]];
        }
    }
  return result;
};

Optimal Solution

Còn đây là thuật toán mình lượm trên mạng, rất ngắn và rất khó hiểu, đỉnh quá.

var romanToInt = function(s) {
    const map = {
        'I': 1,
        'V': 5,
        'X': 10,
        'L': 50,
        'C': 100,
        'D': 500,
        'M': 1000
    }
    let result = 0;
    for (let i = 0; i < s.length; i++) {
        const curr = map[s[i]], next = map[s[i + 1]];
        result += curr < next ? - curr : curr;
    }
    return result;
};

All Rights Reserved

Viblo
Let's register a Viblo Account to get more interesting posts.