1、Roman to Integer
Given a roman numeral, convert it to an integer.
Input is guaranteed to be within the range from 1 to 3999.
class Solution {
public:
int romanToInt(string s) {
if(s.size()==0)
return 0;
map<char,int> romanMap{{'M',1000},{'D',500},{'C',100},{'L',50},{'X',10},{'V',5},{'I',1}};
auto beg=s.begin();
int result=0;
char prev=*beg++;;
while(beg!=s.end())
{
if(romanMap[prev]<romanMap[*beg])
result=result-romanMap[prev];
else
result+=romanMap[prev];
prev=*beg++;
}
return result+romanMap[prev];
}
};2、Integer to Roman
Given an integer, convert it to a roman numeral.
Input is guaranteed to be within the range from 1 to 3999.
class Solution {
public:
string intToRoman(int num) {
string thos[] = {"","M","MM","MMM"};
string huns[] = {"", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM"};
string tens[] = {"", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC"};
string ones[] = {"", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"};
string roman;
roman+=thos[num/1000];
num%=1000;
roman+=huns[num/100];
num%=100;
roman+=tens[num/10];
num%=10;
roman+=ones[num];
return roman;
}
};
本文介绍了两个关于罗马数字与整数互相转换的算法实现。第一个算法将罗马数字转换为整数,考虑到特殊组合如IV表示4的情况。第二个算法则实现了整数到罗马数字的转换,适用于1到3999之间的数值。
836

被折叠的 条评论
为什么被折叠?



