思路
1 考虑一点 即 当 罗马数字的前一位比后一位小,则要用后位减去 前一位
代码:
int romanToInt(string s) {
int result=0;
for(int i=0;i<s.length();i++){
if(i>0&&getNum(s[i])>getNum(s[i-1])){
result+=getNum(s[i])-2*getNum(s[i-1]);
}else{
result+=getNum(s[i]);
}
}
return result;
}
int getNum(char c){
switch(c)
{
case 'I': return 1;
case 'V': return 5;
case 'X': return 10;
case 'L': return 50;
case 'C': return 100;
case 'D': return 500;
case 'M': return 1000;
}
return 0;
}
阿拉伯数字转换为罗马
代码;
string intToRoman(int num) {
string res="";
vector<int> key={1000,900,500,400,100,90,50,40,10,9,5,4,1};
vector<string> value={"M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"};
for(int i=0;i<key.size();i++){
int count=num/key[i];
for(int j=0;j<count;j++){
res+=value[i];
}
num=num%key[i];
}
return res;
}