果果1020

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 :: 管理 ::

Given a roman numeral, convert it to an integer.

Input is guaranteed to be within the range from 1 to 3999.

 1 public class Solution {
 2     public int romanToInt(String s) {
 3         if (s == null || s.length() < 1) {
 4             throw new IllegalArgumentException("empty string");
 5         }
 6         int r = 0;
 7         int lastAdd = Integer.MAX_VALUE;
 8         for (int i = 0; i < s.length(); i++) {
 9             int t = charToInt(s.charAt(i));
10             if (lastAdd < t) {
11                 r -= 2 * lastAdd;
12             }
13             r += t;
14             lastAdd = t;
15         }
16         return r;
17     }
18     
19     private int charToInt(char c) {
20         int r = 0;
21         switch (c) {
22             case 'I':
23                 r = 1;
24                 break;
25             case 'X':
26                 r = 10;
27                 break;
28             case 'C':
29                 r = 100;
30                 break;
31             case 'M':
32                 r = 1000;
33                 break;
34             case 'V':
35                 r = 5;
36                 break;
37             case 'L':
38                 r = 50;
39                 break;
40             case 'D':
41                 r = 500;
42                 break;
43             default:
44                 throw new IllegalArgumentException("out of range");
45         }
46         return r;
47     }
48 }

 

posted on 2017-01-02 18:18  果果1020  阅读(111)  评论(0)    收藏  举报