标签: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”,與進位制無關。一般認為羅馬數字只用來記數,而不作演算。
)表示,而是用XCIX(
)表示。(等同於阿拉伯數字每位數字分別表示。)
)倍。
具体方法见注释:
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