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 肯定走加的分支。


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

相关推荐
小诗懂技术3 小时前
【网络通信UDP】基础 进程间不同主机的通信
运维·服务器·网络
weixin_440730503 小时前
selenium实战记录-从登陆-首页-进入应用流程用例三种参数化+日志+报告
服务器·selenium·测试工具
琥珀色糖4 小时前
Linux守护进程
linux·终端·守护进程·会话·进程组
Hstar_chen4 小时前
开源一款 HarmonyOS 服务器监控客户端:星辰云巡 1.0.3
服务器·华为·harmonyos
Tisfy5 小时前
LeetCode 3876.构造奇偶一致的数组 II:三种情况分类讨论(其实还是脑筋急转弯)
算法·leetcode·题解·脑筋急转弯
木井巳7 小时前
【BFS/DFS 解决 FloodFill 算法】太平洋大西洋水流问题
java·算法·leetcode·深度优先·广度优先·宽度优先·推荐算法
开心大爆炸7 小时前
xrdp 连接 登录对话框输入密码后闪退
linux·运维·服务器
oushaojun28 小时前
大厂 C++ 面试:深度剖析 Linux Signal 信号机制(转)
linux
Navigator_Z8 小时前
LeetCode //C - 1224. Maximum Equal Frequency
c语言·算法·leetcode
苏生Susheng9 小时前
【软件实施】Linux系统Shell脚本教程
linux·运维·服务器·chrome·spring boot·学习·实施