LeetCode 13. Roman to Integer

Given a roman numeral, convert it to an integer.

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


【题目分析】

题意很简答,即把一个罗马数字转换为一个整数。

罗马数字的取值范围是1到3999。


【思路】

首先我们看一下什么是罗马数字。罗马数字其实并不陌生,但是种古老的计数方式我也是在看到这个题目以后才有所了解。

罗马数字是最早的数字表示方式、比阿拉伯数字早 2000 多年、起源于古罗马

在本题目中我们涉及不到加横线的情况,了解了上述的计数规则,那么我们就可以比较方便地编写程序啦。


【java代码】

 1 public class Solution {
 2     public int romanToInt(String s) {
 3         int result = 0;
 4         Map<String, Integer> map = new HashMap<>();
 5         map.put("M", 1000);
 6         map.put("D", 500);
 7         map.put("C", 100);
 8         map.put("L", 50);
 9         map.put("X", 10);
10         map.put("V", 5);
11         map.put("I", 1);
12         
13         int last = 0;
14         for(int i = 0; i < s.length(); i++){
15             String ch = String.valueOf(s.charAt(i));
16             int cur = map.get(ch);
17             
18             if(last < cur) result = result + cur - 2*last;
19             else result += cur;
20             last = cur;
21         }
22         return result;
23     }
24 }

 

posted @ 2016-10-19 14:26  Black_Knight  阅读(229)  评论(0编辑  收藏  举报