Given a roman numeral, convert it to an integer.

来源:互联网 发布:mac登陆windows 编辑:程序博客网 时间:2024/06/07 03:56

Given a roman numeral, convert it to an integer.

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


思想:

知道罗马数的规则,其实是不难的

罗马数字是阿拉伯数字传入之前使用的一种数码。罗马数字采用七个罗马字母作数字、即Ⅰ(1)、X(10)、C(100)、M(1000)、V(5)、L(50)、D(500)。记数的方法:
(1)相同的数字连写,所表示的数等于这些数字相加得到的数,如 Ⅲ=3;
(2)小的数字在大的数字的右边,所表示的数等于这些数字相加得到的数,如 Ⅷ=8、Ⅻ=12。
(3)小的数字(限于 Ⅰ、X 和 C)在大的数字的左边,所表示的数等于大数减小数得到的数,如 Ⅳ=4、Ⅸ=9;
(4)在一个数的上面画一条横线,表示这个数增值 1,000 倍。
public class RomanToInteger {public int romanToInt(String s){ int nums[] = new int[s.length()];  for(int i=0;i<s.length();i++){ switch(s.charAt(i)){ case 'M': nums[i]=1000; break; case 'D': nums[i]=500; break; case 'C': nums[i]=100; break; case 'L': nums[i]=50; break; case 'X': nums[i]=10; break; case 'V': nums[i]=5; break; case 'I': nums[i]=1; break; } }  int sum=0; for(int i=0; i<nums.length-1;i++){ if(nums[i]<nums[i+1]){ sum-=nums[i]; }else{ sum+=nums[i]; } } return sum+nums[nums.length-1]; }}