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


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

相关推荐
0+1117 分钟前
算法 --栈
算法·leetcode
GIFT16810 分钟前
进程优先级
linux
虎头金猫13 分钟前
从上传PPT到观众远程打开互动页面:Claper在CentOS 7上的Docker部署、互动组件设置与固定访问地址实战
linux·运维·网络·人工智能·docker·centos·powerpoint
圣保罗的大教堂17 分钟前
leetcode 3723. 数位平方和的最大值 中等
leetcode
用户7667439345430 分钟前
云服务器上线前,我必做的 5 项安全检查
linux
AI备忘录38 分钟前
(二十五)华为华三锐捷迈普思科 ERPS 环网保护配置命令(G.8032 五厂商对照)
运维·服务器·网络·网络协议·华为
木由里予1 小时前
NAND 这门生意
运维·服务器·网络·单片机
slimer1 小时前
11.C 语言 printf 打印函数详解:格式说明符、宽度精度与安全输出
linux·c语言
不会就选b1 小时前
Linux之ip地址<3>
linux·运维·tcp/ip
Victor Zhong1 小时前
llama.cpp 部署大模型到 Ubuntu 台式机 SOP
linux·ubuntu·llama