LeetCode13.罗马数字转整数
题目
考虑到有些数字是由2个字符组成的,因此可以用string类提供的Replace方法。将2个字符表示的数值替换成1个字符。
代码
public class Solution
{
public int RomanToInt(string s)
{
s = s.Replace("IV", "A");//4
s = s.Replace("IX", "B");//9
s = s.Replace("XL", "H");//40
s = s.Replace("XC", "E");//90
s = s.Replace("CD", "F");//400
s = s.Replace("CM", "G");//900
int sum = 0;
int i = 0;
for (; i < s.Length; i++)
{
switch(s[i])
{
case 'I':
sum += 1;
break;
case 'A':
sum += 4;
break;
case 'V':
sum += 5;
break;
case 'B':
sum += 9;
break;
case 'X':
sum += 10;
break;
case 'H':
sum += 40;
break;
case 'L':
sum += 50;
break;
case 'E':
sum += 90;
break;
case 'C':
sum += 100;
break;
case 'F':
sum += 400;
break;
case 'D':
sum += 500;
break;
case 'G':
sum += 900;
break;
case 'M':
sum += 1000;
break;
default:
sum = -1;
break;
}
}
if (sum > 0 || sum < 4000)
return sum;
else
return -1;
}
}