leetcode_Roman to Integer_easy_可以看看方法

本文介绍了一种将罗马数字转换为整数的方法,并提供了一个C++实现示例。该算法通过构建映射表来解析罗马数字字符串,考虑到特殊情况如IV(4)和IX(9)等的处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Given a roman numeral, convert it to an integer.

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

主要弄清楚罗马数字的表示方法:

I - 1

II- 2

III-3

IV-4

V - 5

X - 10

L - 50

C - 100

D - 500

M - 1000


class Solution {
public:
    int romanToInt(string s) {
        map<char,int> mapVal;
        mapVal.insert(pair<char,int>('I',1));
        mapVal.insert(pair<char,int>('V',5));
        mapVal.insert(pair<char,int>('X',10));
        mapVal.insert(pair<char,int>('L',50));
        mapVal.insert(pair<char,int>('C',100));
        mapVal.insert(pair<char,int>('D',500));
        mapVal.insert(pair<char,int>('M',1000));
        int len=s.length(),res=0,i;
        for(i=0; i<len-1; )
        {
            if(mapVal[s[i]]>=mapVal[s[i+1]])//单个字符代表数值的情况比如V代表5
            {
                res+=mapVal[s[i]];
                i++;
            }
            else//2个字符代表数值的情况,比如IV代表4
            {
                res+=mapVal[s[i+1]]-mapVal[s[i]];
                i=i+2;
            }   
        }
        if(i==len-1)
            res+=mapVal[s[i]];
        return res;
    }
};



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值