/** * @param {string} s * @return {number} */var romanToInt = function (s) { // 创建罗马数字与整数的对应关系,可以看到它们互相是不重复的 // 每次只需要截取s中的部分字符,在Map中查询对应的整数即可 const map = new Map([ ['M', 1000], ['CM', 900], ['D', 500], ['CD', 400], ['C', 100], ['XC', 90], ['L', 50], ['XL', 40], ['X', 10], ['IX', 9], ['V', 5], ['IV', 4], ['I', 1], ]) // 储存结果 let result = 0
// 遍历s,查询罗马数字对应的整数 for (let i = 0; i < s.length; ) { // 截取两个字符,查看是否满足两位罗马数字 if (map.has(s.substr(i, 2))) { // 将对应的整数加和到result result += map.get(s.substr(i, 2)) // 计算了2位罗马数字,指针向后移动2位 i += 2 } else { // 将对应的整数加和到结果 result += map.get(s.substr(i, 1)) // 计算了1位罗马数字,指针向后移动1位 i += 1 } }
return result}
评论