标签:style http color io ar java for sp on
Given a roman numeral, convert it to an integer.
Input is guaranteed to be within the range from 1 to 3999.
思路是蛮简单的,关键就是理解罗马数字的规则:
羅馬數字共有7個,即I(1)、V(5)、X(10)、L(50)、C(100)、D(500)和M(1000)。按照下述的規則可以表示任意正整數。需要注意的是罗马数字中没有“0”,與進位制無關。一般認為羅馬數字只用來記數,而不作演算。
具体方法见注释:
import java.util.*; public class solution { public static int romanToInt(String s) { Map<String,Integer> roman = new Hashtable<String,Integer>(); roman.put("I", 1); roman.put("V", 5); roman.put("X", 10); roman.put("L", 50); roman.put("C", 100); roman.put("D", 500); roman.put("M", 1000); int res = 0; String temp = ""; if(s.length()==1) return roman.get(s.charAt(0)+temp); for(int i=s.length()-1;i>=0;i--) { if(i==s.length()-1) { res = roman.get(s.charAt(i)+temp); continue; } if(roman.get(s.charAt(i)+temp)>roman.get(s.charAt(i+1)+temp)) { res+=roman.get(s.charAt(i)+temp); } else res-=roman.get(s.charAt(i)+temp); } return res; } public static void main(String[] args){ int t =romanToInt("MCMXCVI"); System.out.println(t); } }
标签:style http color io ar java for sp on
原文地址:http://blog.csdn.net/zhuangjingyang/article/details/40452129