首页 > 代码库 > leetcode:Roman to Integer
leetcode:Roman to Integer
一、 题目
将罗马数字转换成整型数字。前面已经介绍过罗马数字了这里就不赘述了。
二、 分析
前面的Integerto Roman 已经知道将整型数转换成罗马数字,方面一样我们需要一位位的确定。首先我们一个个的将字母和数字匹配对应,然后我们由以下的规则来思考:
1、重复次数:一个罗马数字重复几次,就表示这个数的几倍。
左加右减:
2、在较大的罗马数字的右边记上较小的罗马数字,表示大数字加小数字。
3、在较大的罗马数字的左边记上较小的罗马数字,表示大数字减小数字。
所以,我们在转换的时候只需要考虑到下一个字母的存在和取值,和当前的对应的值比较确定应该加或者减。
class Solution { public: int romanToInt(string s) { int out = 0; map<char, int> stand = { { 'I', 1 }, { 'V', 5 }, { 'X', 10 }, { 'L', 50 }, { 'C', 100 }, { 'D', 500 }, { 'M', 1000 } }; for (int i = 0; i < s.size(); i++) { if ((i + 1) < s.size() && stand[s[i]] < stand[s[i + 1]]) { out += stand[s[i + 1]] - stand[s[i]]; i++; } else out += stand[s[i]]; } return out; } };
leetcode:Roman to Integer
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。