13. 罗马数字转整数
解析罗马字符串
执行用时:2 ms, 在所有 Java 提交中击败了100.00%的用户 内存消耗:41.1 MB, 在所有 Java 提交中击败了63.58%的用户
/*** 罗马数字由 `I,V,X,L,C,D,M` 组成* 如果小数值在大数值左边,则用减法,如 `IV = 5 - 1 = 4`* 如果小数值在大数值右边,则用加法,如 `VI = 5 + 1 = 5`** 总而言之,如果小数值在大数值右边,则做加法,否则做减法*/class Solution {public int romanToInt(String s) {int sum = 0;// 用于存放上一位,初使化为第 0 位,for 从 1 开始int preNum = getValue(s.charAt(0));for (int i = 1; i < s.length(); i++) {int num = getValue(s.charAt(i));if (num > preNum) {sum -= preNum;} else {sum += preNum;}preNum = num;}sum += preNum;return sum;}private int getValue(char ch) {switch(ch) {case 'I': return 1;case 'V': return 5;case 'X': return 10;case 'L': return 50;case 'C': return 100;case 'D': return 500;case 'M': return 1000;default: return 0;}}}

