Github来源:力扣 (LeetCode)|刷题打卡 | 求星星 ✨ | 给个❤️关注,❤️点赞,❤️鼓励一下作者
[已开启]任务一:刷题打卡 * 10 篇
哪吒人生信条:如果你所学的东西 处于喜欢 才会有强大的动力支撑。
每天学习编程,让你离梦想更新一步,感谢不负每一份热爱编程的程序员,不论知识点多么奇葩,和我一起,让那一颗四处流荡的心定下来,一直走下去,加油,2021
加油!欢迎关注加我vx:xiaoda0423
,欢迎点赞、收藏和评论
时间:3 月 1 日 ~ 3 月 13 日
如果这篇文章有帮助到你,给个❤️关注,❤️点赞,❤️鼓励一下作者,接收好挑战了吗?文章公众号首发,关注 程序员哆啦A梦 第一时间获取最新的文章
❤️笔芯❤️~
栈,队列,链表,集合,字典和散列表,树,图
一、题目描述
罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。
image.png
image.png
二、思路分析
I,V,X,L,C,D,M
构成;IV=5-1=4
VI=5+1=6
把一个小值放在大值的左边,就是做减法,否则为加法。
image.png
1
个字符,一种是 2
个字符,其中 2
个字符优先于 1
个字符ans
中,并向后移2
个字符。不存在则将判断当前 1
个字符是否存在,存在则将值取出加到结果 ans
中,并向后移 1
个字符ans
image.png
image.png
image.png
image.png
三、答案代码
var romanToInt = function(s) {
let map = {
I: 1,
IV: 4,
V: 5,
IX: 9,
X: 10,
XL: 40,
L: 50,
XC: 90,
C: 100,
CD: 400,
D: 500,
CM: 900,
M: 1000
}
let ans = 0;
for(let i=0; i<s.length;){
if( i+1 < s.length && map[s.substring(i,i+2)] ){
// 2个一组
ans += map[s.substring(i,i+2)];
i += 2;
}else{
// 单一个
ans += map[s.substring(i,i+1)];
i++;
}
}
return ans;
};
四、总结