LeetCode(13) - Roman to Integer

  这题和12题是刚好反过来,给你的是一个罗马数字,然后输出一个int。对于这题我并没有用到数组,只根据罗马数字的规则从右往左处理就好,碰到数字比右边最大的要小就减(如IV,右往左读,读到I发现比V要小,故-1),不然就加。代码如下:

 1 public class Solution {
 2     public int romanToInt(String s) {
 3         int lastBigRomaNum = convertChar(s.charAt(s.length() - 1));
 4         int num = lastBigRomaNum;
 5         for (int i = s.length() - 2; i >= 0; i--) {
 6             int roman = convertChar(s.charAt(i));
 7             if (roman < lastBigRomaNum) {
 8                 num -= roman;
 9             } else {
10                 num += roman;
11                 lastBigRomaNum = roman;
12             }
13         }
14         return num;
15     }
16 
17     //convert roman char into according integer.
18     private int convertChar(char c) {
19         switch (c) {
20         case 'I': 
21             return 1;
22         case 'V':
23             return 5;
24         case 'X':
25             return 10;
26         case 'L':
27             return 50;
28         case 'C':
29             return 100;
30         case 'D':
31             return 500;
32         case 'M':
33             return 1000;
34         default:
35             return 0;
36         }
37     }
38 }
原文地址:https://www.cnblogs.com/kepuCS/p/5244059.html