Leetcode Roman to Integer

本文介绍了一种将罗马数字转换为整数的算法实现,通过构建映射表并遍历字符串来完成转换过程,特别关注了特殊情况如IV、IX等的处理。

Given a roman numeral, convert it to an integer.

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

保存最典型的,1,5,10,等,然后如果左边的数比右边的小,则减去左边的数,否则相加

package Roman.to.Integer;

import java.util.HashMap;
import java.util.Map;

public class RomantoInteger {
Map<String,Integer> map=new HashMap<String,Integer>();

public void add(int key,String value){
    this.map.put(value, key);
}
public int romanToInt(String s) {
    this.add(1000, "M");
    this.add(500,  "D");
    this.add(100,  "C");
    this.add(50,   "L");
    this.add(10,   "X");
    this.add(5,    "V");
    this.add(1,    "I");
    int i=s.length()-1;
    char a=s.charAt(i);
    String aS=String.valueOf(a);
    int result=this.map.get(aS);
    i--;
    while(i>=0){
    char temp=s.charAt(i);
    String tempS=String.valueOf(temp);
    int curr= this.map.get(tempS);
    char tempNext=s.charAt(i+1);
    String tempNextS=String.valueOf(tempNext);
    int next=this.map.get(tempNextS);
    i--;
    if(next>curr){
        result-=curr;
    }else{
        result+=curr;
    }
    }
    return result;        
    
    }
public static void main(String args[]){
    RomantoInteger service=new RomantoInteger();
    int a=service.romanToInt("IX");
    System.out.println(a);
}
}

 

转载于:https://www.cnblogs.com/criseRabbit/p/4300099.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值