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.

思路:

  • 罗马字符和数字的对应关系存储在map里,拿到字符串从前往后遍历,如果当前数字比后面的小,说明是减法,当做整体,如“XC” = 100-10=90,下标+2;否则的话是加法,如“II”,累加当前数字,下标+1,注意有最后一位的话,累加该数
public int romanToInt(String s) {
        HashMap<Character, Integer> map = new HashMap<Character, Integer>(){
			{
				put('M', 1000);
				put('D', 500);
				put('C', 100);
				put('L', 50);
				put('X', 10);
				put('V', 5);
				put('I', 1);
			}
		};
		int n = s.length(), count = 0, x, y;
		for(int i=0; i<n; i++){
			
			x = map.get(s.charAt(i));
			if(i == n-1){
				y= 0;
			}else{
				y = map.get(s.charAt(i+1));
			}
			if(x < y){
				count += (y-x);
				i++;
			}else{
				count += x;
			}
		}
		return count;
    }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值