直接用愚蠢的方法
var romanToInt = function(s) { const n = s.length; let i = 0; let res = 0; while(i < n) { if (s[i] === 'M') { res = 1000; i ; } else if (s[i] === 'C' && s[i 1] === 'M') { res = 900; i = 2; } else if (s[i] === 'D') { res = 500; i ; } else if (s[i] === 'C' && s[i 1] === 'D') { res = 400; i = 2; } else if (s[i] === 'C') { res = 100; i ; } else if (s[i] === 'X' && s[i 1] === 'C') { res = 90; i = 2; } else if (s[i] === 'L') { res = 50; i ; } else if (s[i] === 'X' && s[i 1] === 'L') { res = 40; i = 2; } else if (s[i] === 'X') { res = 10; i ; } else if (s[i] === 'I' && s[i 1] === 'X') { res = 9; i = 2; } else if (s[i] === 'V') { res = 5; i ; } else if (s[i] === 'I' && s[i 1] === 'V') { res = 4; i = 2; } else if (s[i] === 'I') { res = 1; i ; } } return res; };
官方版本
var romanToInt = function(s) { const symbolValues = new Map(); symbolValues.set('I', 1); symbolValues.set('V', 5); symbolValues.set('X', 10); symbolValues.set('L', 50); symbolValues.set('C', 100); symbolValues.set('D', 500); symbolValues.set('M', 1000); let ans = 0; const n = s.length; for (let i = 0; i < n; i) { const value = symbolValues.get(s[i]); if (i < n - 1 && value < symbolValues.get(s[i 1])) { ans -= value; } else { ans = value; } } return ans; }; 作者:LeetCode-Solution 链接:https://leetcode.cn/problems/roman-to-integer/solution/luo-ma-shu-zi-zhuan-zheng-shu-by-leetcod-w55p/ 来源:力扣(LeetCode) 作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。