整体思路如下,正如题目的提示所提及的,一个表示自实际数字小的字母出现在一个实际表示数字大的字母的左边无非六种情况,所以只需要顺序的对相邻的两个元素判断它们的优先次序即可解决此问题。
I 可以放在 V (5) 和 X (10) 的左边,来表示 4 和 9。
X 可以放在 L (50) 和 C (100) 的左边,来表示 40 和 90。
C 可以放在 D (500) 和 M (1000) 的左边,来表示 400 和 900。
/**
* @param {string} s
* @return {number}
*/
var romanToInt = function(s)
{
var obj={
"I":1,
"V":5,
"X":10,
"L":50,
"C":100,
"D":500,
"M":1000
};
var result=0;
for(var i=0;i<s.length;i++)
{
var front=s[i];
var back=s[i+1];
if(obj[back]>obj[front])
{
result-=obj[front];
}
else{
result+=obj[front];
}
}
return result;
};