掘金团队号上线,助你 Offer 临门! 点击 查看详情 (opens new window)
# 前言
第一次参加掘金打卡活动,别的不说 主要是奔着奖励来的。4.12开始为了达到14题小目标 冲冲冲!!!这是第10题。
# 题目描述
题目链接:罗马数字转整数 (opens new window)
题目描述我用截图leetcode的为主,所以题目如下图
# 思路分析
特殊情况:空字符串先判断一下,然后进入分析
先根据题目写个初始对象{ '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
共同的规律就是前一位小于后一位
解法.每次切割去判断后一位是否大于前一位是的话用减,然后直到遍历结束
# 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
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# 总结
坚持就是胜利。第10题算法完成,坚持就是胜利!!!
↓↓↓
↑↑↑
这里可以点!这里可以点!这里可以点!