乐趣区

关于算法:leetcode算法13罗马数字转整数

👏👏👏

哈喽!大家好,我是【学无止境小奇】,一位酷爱分享各种技术的博主!😍😍😍

⭐【学无止境小奇】的创作主旨:每一条命令都亲自执行过,每一行代码都理论运行过,每一种办法都实在实际过,每一篇文章都良心制作过。✊✊✊

⭐【学无止境小奇】的博客中所有波及命令、代码的中央,除了提供图片供大家参考,另外会在图片下方提供一份纯文本格式的命令或者代码不便大家粘贴复制间接执行命令或者运行代码。🤝🤝🤝

⭐如果你对技术有着浓重的趣味,欢送关注【学无止境小奇】,欢送大家和我一起交换。😘😘😘

❤️❤️❤️感激各位朋友接下来的浏览❤️❤️❤️

文章目录
一、leetcode 算法
1、罗马数字转整数
1.1、题目
1.2、思路
1.3、答案
一、leetcode 算法
1、罗马数字转整数
1.1、题目
罗马数字蕴含以下七种字符: I,V,X,L,C,D 和 M。
字符 数值
I 1
V 5
X 10
L 50
C 100
D 500
M 1000
例如,罗马数字 2 写做 II,即为两个并列的 1。12 写做 XII,即为 X + II。27 写做 XXVII, 即为 XX + V + II。

通常状况下,罗马数字中小的数字在大的数字的左边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的右边,所示意的数等于大数 5 减小数 1 失去的数值 4。同样地,数字 9 示意为 IX。这个非凡的规定只实用于以下六种状况:

I 能够放在 V (5) 和 X (10) 的右边,来示意 4 和 9。
X 能够放在 L (50) 和 C (100) 的右边,来示意 40 和 90。
C 能够放在 D (500) 和 M (1000) 的右边,来示意 400 和 900。
给定一个罗马数字,将其转换成整数。

1.2、思路
思路一:本题的难点就是小数字放在右边或者左边的问题,咱们能够判断如果放在右边那么减去小数字,如果放在左边则加上小数字。

1.3、答案
在这里插入图片形容

class Solution {

Map<Character,Integer> map = new HashMap<Character,Integer>(){{put('I', 1);
    put('V', 5);
    put('X', 10);
    put('L', 50);
    put('C', 100);
    put('D', 500);
    put('M', 1000);
}};

public int romanToInt(String s) {
    int num = 0;
    int n = s.length();
    for(int i =0; i < n; i++){int value = map.get(s.charAt(i));
        if(i < n-1 && value < map.get(s.charAt(i+1))){num -= value;} else{num += value;}
    }
    return num;
}

}

退出移动版