LeetCode_13——罗马数字转整数

本文详细解析了将罗马数字转换为整数的算法实现过程,通过遍历字符串并比较相邻字符值大小,巧妙地实现了加减法混合运算,解决了罗马数字的转换难题。

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

解法:定义返回值res=0,依次遍历字符串,

比如IV,先遍历I,因为I后面的V比I大,则res=res+5-1=4;

又比如VIII,(1)先遍历V,因为V后面I比V小,则res=res+5=5;

                    (2)再遍历I,因为后面I和I相等,则res=res+1=6;

                    (3)同理,最终可得res=8;

class Solution1 {
public:
	int romanToInt(string s) {
		map<char, int> roman{
			{'I',1},
			{'V',5},
			{'X',10},
			{'L',50},
			{'C',100},
			{'D',500},
			{'M',1000}
		};
		int result=0;
		for(auto s_cur = s.begin(); s_cur != s.end(); s_cur++) {
			if (s_cur+1 < s.end() && roman[*s_cur] < roman[*(s_cur + 1)]) {
				result = result + roman[*(s_cur + 1)] - roman[*s_cur];
				s_cur++;
			}
			else
				result = result + roman[*s_cur];
		}
		return result;
	}
};

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值