Roman to Integer

本贴最后更新于 2462 天前,其中的信息可能已经时过境迁

题目描述

Given a roman numeral, convert it to an integer.

Input is guaranteed to be within the range from 1 to 3999.

把罗马数字转换为阿拉伯数字。

解题思路

从右往左读,一旦发现左边的数字小于右边的最大值,那么说明这个数字应该被减去。

代码

class Solution {
    public int romanToInt(String s) {
        if (s == null || s.length() == 0)
            return 0;
        HashMap<Character, Integer> map = new HashMap<>();
        map.put('I', 1);
        map.put('V', 5);
        map.put('X', 10);
        map.put('L', 50);
        map.put('C', 100);
        map.put('D', 500);
        map.put('M', 1000);
        int ret = 0;
        int pre = 0;
        for (int i = s.length()-1; i >= 0; i--) {
            char c = s.charAt(i);
            int val = map.get(c);
            if (val >= pre) {
                ret += val;
                pre = val;
            }
            else
                ret -= val;
        }
        return ret;
    }
}
  • 算法
    428 引用 • 254 回帖 • 24 关注
  • LeetCode

    LeetCode(力扣)是一个全球极客挚爱的高质量技术成长平台,想要学习和提升专业能力从这里开始,充足技术干货等你来啃,轻松拿下 Dream Offer!

    209 引用 • 72 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...