力扣——13. 罗马数字转整数(java)

简介: 力扣——13. 罗马数字转整数(java)

在这里插入图片描述
在这里插入图片描述

解题思路:根据表去建hashmap

代码:

class Solution {
    static Map<Character, Integer> map = new HashMap<>();
    public int romanToInt(String s) {
        if (!map.containsKey('I')) { // 构造映射函数
            char[] l = new char[]{'I', 'V', 'X', 'L', 'C', 'D', 'M'};
            for (int i = 0, v = 1; i < 7; ++i) {
                if ((i&1) == 1) {map.put(l[i], 5 * v); v *= 10;}
                else map.put(l[i], v);
            }
        }
        int len = s.length(), ans = map.get(s.charAt(0));
        for (int i = 1; i < len; ++i) {
            // 当上一个罗马值小于下一个时, 需要减去2倍的上一个值
            if (map.get(s.charAt(i - 1)) < map.get(s.charAt(i))) 
                ans -= 2 * map.get(s.charAt(i - 1));
            ans += map.get(s.charAt(i));
        }
        return ans;
    }
}

请添加图片描述

作者:KJ.JK

本文仅用于交流学习,未经作者允许,禁止转载,更勿做其他用途,违者必究。
文章对你有所帮助的话,欢迎给个赞或者 star,你的支持是对作者最大的鼓励,不足之处可以在评论区多多指正,交流学习

目录
相关文章
|
6天前
|
Java
Java中整数(负数)的二进制表示
Java中整数(负数)的二进制表示
|
6天前
|
算法 Java
[Java·算法·简单] LeetCode 27. 移除元素 详细解读
[Java·算法·简单] LeetCode 27. 移除元素 详细解读
27 1
|
6天前
|
算法 Java C语言
C++和Java中的随机函数你玩明白了吗?内附LeetCode470.rand7()爆改rand10()巨详细题解,带你打败LeetCode%99选手
C++和Java中的随机函数你玩明白了吗?内附LeetCode470.rand7()爆改rand10()巨详细题解,带你打败LeetCode%99选手
|
6天前
|
算法 Java
[Java·算法·简单] LeetCode 13. 罗马数字转整数 详细解读
[Java·算法·简单] LeetCode 13. 罗马数字转整数 详细解读
25 0
|
6天前
【Leetcode】两数之和,给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
【Leetcode】两数之和,给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
|
6天前
leetcode代码记录(整数拆分
leetcode代码记录(整数拆分
13 0
|
6天前
[leetcode~数位动态规划] 2719. 统计整数数目 hard
[leetcode~数位动态规划] 2719. 统计整数数目 hard
|
6天前
|
存储 算法
leetcode1237. 找出给定方程的正整数解
leetcode1237. 找出给定方程的正整数解
8 0
|
6天前
|
算法 Java
【力扣经典面试题】12. 整数转罗马数字
【力扣经典面试题】12. 整数转罗马数字
|
6天前
leetcode2376. 统计特殊整数
leetcode2376. 统计特殊整数
15 1