curriculum/challenges/english/blocks/daily-coding-challenges-javascript/68adce01c0e1144d0a90295c.md
Given a string representing a Roman numeral, return its integer value.
Roman numerals consist of the following symbols and values:
| Symbol | Value |
|---|---|
| I | 1 |
| V | 5 |
| X | 10 |
| L | 50 |
| C | 100 |
| D | 500 |
| M | 1000 |
parseRomanNumeral("III") should return 3.
assert.equal(parseRomanNumeral("III"), 3);
parseRomanNumeral("IV") should return 4.
assert.equal(parseRomanNumeral("IV"), 4);
parseRomanNumeral("XXVI") should return 26.
assert.equal(parseRomanNumeral("XXVI"), 26);
parseRomanNumeral("XCIX") should return 99.
assert.equal(parseRomanNumeral("XCIX"), 99);
parseRomanNumeral("CDLX") should return 460.
assert.equal(parseRomanNumeral("CDLX"), 460);
parseRomanNumeral("DIV") should return 504.
assert.equal(parseRomanNumeral("DIV"), 504);
parseRomanNumeral("MMXXV") should return 2025.
assert.equal(parseRomanNumeral("MMXXV"), 2025);
function parseRomanNumeral(numeral) {
return numeral;
}
function parseRomanNumeral(numeral) {
const romanMap = {
I: 1,
V: 5,
X: 10,
L: 50,
C: 100,
D: 500,
M: 1000
};
let total = 0;
for (let i = 0; i < numeral.length; i++) {
const current = romanMap[numeral[i]];
const next = romanMap[numeral[i + 1]];
if (next && current < next) {
total -= current;
} else {
total += current;
}
}
return total;
}