Open chencl1986 opened 9 months ago
原题链接:13. 罗马数字转整数
解题思路:
s
i
/** * @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 }
原题链接:13. 罗马数字转整数
解题思路:
s
,分别截取从i
开始的2位和1位字符串,查看其在哈希表中的罗马数字对应的整数,将其加和到结果中。