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 }