您的位置:首页 > 其它

和大神们学习每天一题(leetcode)-Roman to Integer

2014-12-01 10:23 429 查看
Given a roman numeral, convert it to an integer.

Input is guaranteed to be within the range from 1 to 3999.

I - 1

V - 5

X - 10

L - 50

C - 100

D - 500

M - 1000

If a lower value symbol is before a higher value one, it is subtracted. Otherwise it is added.

So 'IV' is '4' and 'VI' is '6'.

And for adding 'XIII' makes '13'

For the numbers above X, only the symbol right before it may be subtracted: so 99 is: XCIX (and not IC).
class Solution
{
public:
int romanToInt(string s)
{
int nsLen = s.length();
int nRemain = 0 ,nNumFor = 0 ,nNumLat ,nSum = 0;
for (int nTemp = 0; nTemp < nsLen; nTemp++)
{
switch (s[nTemp])
{
case 'I' : nNumLat = 1; break;
case 'V': nNumLat = 5; break;
case 'X': nNumLat = 10; break;
case 'L': nNumLat = 50; break;
case 'C': nNumLat = 100; break;
case 'D': nNumLat = 500; break;
case 'M': nNumLat = 1000; break;
default:
break;
}
if (nNumLat < nNumFor)
{
nSum += nRemain;
nRemain = nNumLat;

}
else if (nNumLat == nNumFor)
{
nRemain += nNumLat;
}
else
{
nRemain = nNumLat - nRemain;
}
nNumFor = nNumLat;
}
nSum += nRemain;
return nSum;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: