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 肯定走加的分支。
这道题你踩过什么坑?或者你用别的语言实现过吗?评论区聊聊,回头复习也方便翻。