package com.gloomy.leetcode;
import java.util.HashMap;
/**
* 罗马数字转换为阿拉伯数字
*
* @author 过路的守望
* 罗马数字是阿拉伯数字传入之前使用的一种数码
* 。罗马数字采用七个罗马字母作数字,即Ⅰ(1)、X(10)、C(100)、M(1000
* )、V(5)、L(50)、D(500)M(1000)。记数的方法:
*
* 1、相同的数字连写,所表示的数等于这些数字相加得到的数,如,Ⅲ = 3;
*
* 2、小的数字在大的数字的右边,所表示的数等于这些数字相加得到的数,如,Ⅷ = 8,Ⅻ = 12;
*
* 3、小的数字,(限于Ⅰ、X 和 C)在大的数字的左边,所表示的数等于大数减小数得到的数,如,Ⅳ = 4,Ⅸ = 9;
*
* 4、在一个数的上面画一条横线,表示这个数增值1 000倍
*/
public class RomanToInteger {
public static void main(String[] args) {
System.out.println(new RomanToInteger().romanToInt("MCMXCVI"));
}
public int romanToInt(String s) {
HashMap<String, Integer> map = new HashMap<String, Integer>();
map.put("I", 1);
map.put("V", 5);
map.put("X", 10);
map.put("L", 50);
map.put("C", 100);
map.put("D", 500);
map.put("M", 1000);
int len = s.length();
int res = 0;
int pivot = 0;
for (int i = len - 1; i >= 0; i--) {
String c = s.substring(i, i+1);
int cur = map.get(c);
/*
* 比pivot小相减
*/
if (cur < pivot) {
res -= cur;
}
/*
* 大于等于pivot相加
*/
if (cur >= pivot) {
pivot = cur;
res += cur;
}
}
return res;
}
}
LeetCode 13. Roman to Integer
最新推荐文章于 2024-09-09 22:01:06 发布