ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

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

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

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


🟢 罗马数字转整数

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


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

publicintromanToInt(Strings){intres=0;for(inti=0;i<s.length();i++){intcur=map(s.charAt(i));intnext=i+1<s.length()?map(s.charAt(i+1)):0;res+=cur<next?-cur:cur;}returnres;}privateintmap(charc){returnswitch(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 肯定走加的分支。


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

返回列表