【Leetcode】13. 罗马数字转整数

36 阅读1分钟

leetcode-13.png

这一题最重要的就是要建立map,来查询对应位置的大小,其次就是判断有没有小的数出现在大的数之前
这里题目给出的6种可能,除此之外也不会出现 VX之前的这种情况,因为题目的输入都是正确的输入
记录当前的数字大小,判断后面的数字跟当前的大小比较,然后判断 + - 即可

var romanToInt = function (s) {
    let map = new Map();
    map.set("I", 1);
    map.set("V", 5);
    map.set("X", 10);
    map.set("L", 50);
    map.set("C", 100);
    map.set("D", 500);
    map.set("M", 1000);
    let sum = 0;
    for (let i = 0; i < s.length; ++i) {
        let current = map.get(s[i]);
        if (i + 1 < s.length && current < map.get(s[i + 1])) {
            sum -= current;
        } else {
            sum += current;
        }
    }
    return sum;
};