美文网首页
LeetCode题解:13. 罗马数字转整数,哈希表,JavaS

LeetCode题解:13. 罗马数字转整数,哈希表,JavaS

作者: Lee_Chen | 来源:发表于2023-11-22 23:25 被阅读0次

    原题链接:13. 罗马数字转整数

    解题思路:

    1. 本题涉及到的罗马数字都是唯一的,因此可以创建一个哈希表,存储罗马数字和整数的对应关系。
    2. 遍历s,分别截取从i开始的2位和1位字符串,查看其在哈希表中的罗马数字对应的整数,将其加和到结果中。
    /**
     * @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
    }
    

    相关文章

      网友评论

          本文标题:LeetCode题解:13. 罗马数字转整数,哈希表,JavaS

          本文链接:https://www.haomeiwen.com/subject/wdvwwdtx.html