C++算法:罗马数字转整数

leetcode相关C++算法解答: https://github.com/Nereus-Minos/C_plus_plus-leetcode

罗马数字转整数

代码:

	//建立一个哈希表,然后一一判断,若前面的罗马数值比后面的罗马数值小,则将结果加上两者的正差值,若前面的罗马数值比后面的罗马数值大,则直接加上该罗马的对应数值。

	class Solution {
	public:
		int romanToInt(string s) {
			int result=0;//存放结果
			map luomab;//建立罗马表
			//插入对应关系
			luomab.insert(map::value_type('I',1));
			luomab.insert(map::value_type('V',5));
			luomab.insert(map::value_type('X',10));
			luomab.insert(map::value_type('L',50));
			luomab.insert(map::value_type('C',100));
			luomab.insert(map::value_type('D',500));
			luomab.insert(map::value_type('M',1000));
			for(int i=0;i=luomab[s[i+1]])
					result+=luomab[s[i]];
				else
				{
					result+=(luomab[s[i+1]]-luomab[s[i]]);
					i++;
				}
			}
			return result;
		}
	};

你可能感兴趣的:(C++算法)