[java]给定一个罗马数字,将其转换成整数。

class Solution {
    public int romanToInt(String s) {
        Map<String,Integer> map = new HashMap<>();
        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);
        char [] a =s.toCharArray();
        char [] b =null;
        int temp = 0;
        int sum = 0 ;
//        System.out.println(s.length());
        for ( int i = 0 ; i < s.length()  ; i++){
            int left=map.get(Character.toString(a[i]));
            int right = 0 ;
            if(i+1<s.length()) right=map.get(Character.toString(a[i+1]));
            if(left>right){
                sum = sum + left;
                sum = sum + temp;
                temp=0;
            }
            else if((left-right!=0)&&((right-left)==4||(right-left)==9||(right-left)%40==0||(right-left)%400==0||(right-left)%900==0||(right-left)%90==0)){
                sum = sum + (right-left) ;
                temp = 0 ;
                i = i + 1 ;
            }
            else{
                temp = temp + left;
            }
        }
        if(temp!=0) sum=sum+temp;
        return sum;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值