[打卡10:leetcode13. 罗马数字转整数] |刷题打卡

180 阅读1分钟

掘金团队号上线,助你 Offer 临门! 点击 查看详情

前言

第一次参加掘金打卡活动,别的不说 主要是奔着奖励来的。4.12开始为了达到14题小目标 冲冲冲!!!这是第10题。

image.png

题目描述

题目链接:罗马数字转整数

题目描述我用截图leetcode的为主,所以题目如下图

image.png

思路分析

特殊情况:空字符串先判断一下,然后进入分析 先根据题目写个初始对象{ 'I':1, 'V':5, 'X':10, 'L':50, 'C':100, 'D':500, 'M':1000 } 方便接下来转换,提示也说明了不会包含这些字符外的情况,可以少考虑很多,再思考一下那些是特殊的IV=4,IX=9,XL=40,XC=90,CD=400,CM=900 共同的规律就是前一位小于后一位

解法.每次切割去判断后一位是否大于前一位是的话用减,然后直到遍历结束

image.png

AC 代码

/**
 * @param {string} s
 * @return {number}
 */
var romanToInt = function(s) {
   if(!s){
       return 0
   }
   let map={
       'I':1,
       'V':5,
       'X':10,
       'L':50,
       'C':100,
       'D':500,
       'M':1000
   }
   let result=0
   s.split('').forEach((item,index)=>{
      if(s[index+1]){
        if(map[item]<map[s[index+1]]){
            result -=map[item]
        }else{
            result +=map[item]
        }
      }else{
          result +=map[item]
      }
   })
   return result
};

总结

坚持就是胜利。第10题算法完成,坚持就是胜利!!!

       ↓↓↓

算法系列链接

       ↑↑↑

这里可以点!这里可以点!这里可以点!