java练习题:罗马数字转整数

本文介绍了一种将罗马数字转换为整数的Java算法。通过使用HashMap存储罗马数字及其对应的整数值,结合特殊规则处理,实现了准确的转换。文章提供了完整的代码实现及示例。
//罗马数字转整数

import java.util.HashMap;
import java.util.*;

public class RomanToInteger {
    public static int romanToInt(String s){
        HashMap<Character,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);
        HashMap<Character,List<Character>> special=new HashMap<>();
        special.put('I',Arrays.asList('V','X'));
        special.put('X',Arrays.asList('L','C'));
        special.put('C',Arrays.asList('D','M'));

        int n=0;
        for(int i=0;i<s.length();i++){
            char c=s.charAt(i);
            if(i<s.length()-1){
                char next=s.charAt(i+1);
                if(special.containsKey(c)){
                    if(special.get(c).contains(next)){
                        int nextInt=map.get(next);
                        int curInt=map.get(c);
                        n+=(nextInt-curInt);
                        i++;
                        continue;
                    }
                }
            }
            int curInt=map.get(c);
            n+=map.get(c);
        }
        return n;
    }

    public static void main(String[] args) {
        System.out.println(romanToInt("II"));
        System.out.println(romanToInt("LVIII"));
        System.out.println(romanToInt("IV"));


    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值