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 天前
linux 配置环境变量
linux
傲世仙尊3 天前
目录即文件-Ext文件系统收尾篇
linux·c语言
虎头金猫3 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
_艾伦 耶格尔.3 天前
进程间通信
linux
旖旎夜光3 天前
力控面试题 01.01: 判定字符是否唯一(位运算) —— 题解
c++·学习·算法·leetcode·力控
Liuqy-053 天前
Linux IO编程——静态库、动态库
linux
彧azz3 天前
Linux 环境下 Redis 学习总结:数据类型、持久化、锁、事务、主从与缓存问题
linux·redis·笔记·学习·面试
-梅3 天前
linux(8) 软硬链接
linux·运维·服务器
Wang's Blog3 天前
Java 项目实战: 外卖平台-文件下载与ServletOutputStream回写浏览器
服务器·项目开发
AIgorithmGEEK3 天前
[Linux]线程三部曲(上):一个执行流的诞生——从操作系统一路拆到 pthread_create
linux·线程·pid