Given a roman numeral, convert it to an integer.
Input is guaranteed to be within the range from 1 to 3999.
罗马数字共有7个,即I(1)、V(5)、X(10)、L(50)、C(100)、D(500)和M(1000)。按照下述的规则可以表示任意正整数。需要注意的是罗马数字中没有“0”,与进位制无关。
#include <iostream> #include <map> #include <string> using namespace std; int romanToInt(string s){ int length = s.length(); if (length < 1) return 0; map<int,int> romanMap; romanMap[‘I‘] = 1; romanMap[‘V‘] = 5; romanMap[‘X‘] = 10; romanMap[‘L‘] = 50; romanMap[‘C‘] = 100; romanMap[‘D‘] = 500; romanMap[‘M‘] = 1000; int index = length - 1 , sum = romanMap[s[index]]; while (--index >= 0) { if (romanMap[s[index+1]] >romanMap[s[index]]) sum -= romanMap[s[index]]; else sum += romanMap[s[index]]; } return sum; } int main(){ cout<<romanToInt("DCXXI")<<endl; return 0; }
leetcode Roman to Integer,布布扣,bubuko.com
原文:http://www.cnblogs.com/xiongqiangcs/p/3627969.html