Leetcode-Solutions icon indicating copy to clipboard operation
Leetcode-Solutions copied to clipboard

Roman to Integer - Leetcode 13.js - Invalid Roman Numeric Value Test Case

Open maheshmuttintidev opened this issue 10 months ago • 0 comments

I found that this solution doesn't handle the "Invalid Roman Numeric Value".

Ex: If we pass IIXX, The output is 20 which is wrong since the IIXX is invalid roman number. In this case, we throw an error, rest of the code continues..

Here is my js solution:

function romanToInt(s) {
    const d = {I: 1, V: 5, X: 10, L: 50, C: 100, D: 500, M: 1000};
    let summ = 0;
    const n = s.length;
    let i = 0;

    while (i < n) {
        if(i > 1 && d[s[i - 2]] < d[s[i - 1]] && d[s[i]] <= d[s[i - 1]]) {
           throw new Error(`Invalid Roman numeric sequence ${s}`);
        }
        if (i < n - 1 && d[s[i]] < d[s[i + 1]]) {
            summ += d[s[i + 1]] - d[s[i]];
            i += 2;
        } else {
            summ += d[s[i]];
            i++;
        }
    }

    return summ;
}

console.log(romanToInt('IIXX'));
console.log(romanToInt('MMD'));

Note

It would be helpful if you add the example test cases when you have the solution for the problem.

maheshmuttintidev avatar Jan 28 '25 06:01 maheshmuttintidev