简单题第四题罗马数字转整数

罗马数字转整数

在这里插入图片描述

在这里插入图片描述

方法一,但是这种方法等于投机取巧不是正解

要看还是得看方法二

class Solution {
	// 首先将罗马数字放入map,
	//I 1
	//IV 4
	//V 5
	//IX 9
	//X 10
	//XL 40
	//L 50
	//XC 90
	//C 100
	//CD 400
	//D 500
	//CM 900
	//M 1000
   public int romanToInt1(String s) {
	       Map<String,Integer> map = new HashMap<>();
	       map.put("I", 1);
	        map.put("IV", 4);
	        map.put("V", 5);
	        map.put("IX", 9);
	        map.put("X", 10);
	        map.put("XL", 40);
	        map.put("L", 50);
	        map.put("XC", 90);
	        map.put("C", 100);
	        map.put("CD", 400);
	        map.put("D", 500);
	        map.put("CM", 900);
	        map.put("M", 1000);
	    int sum = 0; 
		for(int i=0;i<s.length();){
			if(i+1<s.length()&&map.containsKey(s.substring(i,i+2))){
				sum = sum+map.get(s.substring(i,i+2));
				i = i+2;
			}else{
				sum = sum+map.get(s.substring(i,i+1));
				i = i+1;
			}
		}
		return sum;
	}
}

方法二

在这里插入图片描述

public int romanToInt(String s) {
		//设置一个总数值输出用
       int sum=0;
       //把第一个值先录入称为pre
       int preNum=getValue(s.charAt(0));
       //for循环遍历后面的值
       for(int i=1;i<s.length();i++){
       		int beNum=getValue(s.charAt(i));
       		//以MCMXCIV为例  1000-100+1000-10+100-1  
       		//最后一位最重要 V后面没有数字也就是和0比走else 最后+5
       		//sum=1000-100+1000-10+100-1+5
       		if(preNum<beNum){
       			sum=sun-preNum;
       		}else{
       			sum=sum+preNum;
       		}
       		//将下一个罗马数字值 给上一个人
       		preNum=beNum;
       }
}

public int getValue(char ch){
	switch(ch){
		case 'I':return 1;
		case 'V':return 5;
		case 'X':return 10;
		case 'L':return 50;
		case 'C':return 100;
		case 'D':return 500;
		case 'M':return 1000;
		default:return 0;
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一只小小狗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值