LeetCode 13 罗马数字转整数 - 按规则处理

LeetCode 13 罗马数字转整数,和第 12 题反过来,规则就一条:小的在大的左边就减。


🟢 罗马数字转整数

"III" → 3"IV" → 4"LVIII" → 58


罗马数字多数情况大数在左小数在右,加起来就行。例外是小在大左(IV、IX),此时小数要减掉。遍历时当前值小于下一位就减,否则加。

java 复制代码
public int romanToInt(String s) {
    int res = 0;
    for (int i = 0; i < s.length(); i++) {
        int cur = map(s.charAt(i));
        int next = i + 1 < s.length() ? map(s.charAt(i + 1)) : 0;
        res += cur < next ? -cur : cur;
    }
    return res;
}
private int map(char c) {
    return switch (c) {
        case 'I' -> 1; case 'V' -> 5; case 'X' -> 10;
        case 'L' -> 50; case 'C' -> 100; case 'D' -> 500; case 'M' -> 1000;
        default -> 0;
    };
}

七种字符映射用 switch 比 HashMap 快。最后一位没有 next 取 0,cur > 0 肯定走加的分支。


这道题你踩过什么坑?或者你用别的语言实现过吗?评论区聊聊,回头复习也方便翻。

相关推荐
我不会插花弄玉2 小时前
2.Linux基础指令下【由浅入深-Linux】
linux·服务器
雯宝3 小时前
3. 驱动框架(块设备)
linux
立少→万能汉编3 小时前
用“立少→超文本”写静态网页,标签<倍>
服务器·前端·javascript
旖旎夜光3 小时前
LeetCode 904:水果成篮(滑动窗口) —— 题解
数据结构·c++·算法·leetcode·滑动窗口
静止了 所有的花开3 小时前
Ubuntu 26.04 静态 IP 配置不生效解决方法
linux·ubuntu·静态ip
ZC跨境爬虫3 小时前
LeetCode 27. 移除元素(双指针详解 + Java Python 多解法对比)
java·python·leetcode
笨鸟先飞,勤能补拙4 小时前
Web 服务器与计算机网络全景原理
运维·服务器·前端·网络·人工智能·计算机网络·web安全
caimouse4 小时前
ReactOS 图形系统分析(3):显示驱动 DDI framebuf.dll
linux·运维·网络
佳児素花痴╮4 小时前
网络问题与基础理论
运维·服务器·网络