LeetCode - 简单 - 罗马数字转整数
image.png

  1. var romanToInt = function(s) {
  2. const tmap = {
  3. I: 1,
  4. V: 5,
  5. X: 10,
  6. L: 50,
  7. C: 100,
  8. D: 500,
  9. M: 1000,
  10. };
  11. let res = 0;
  12. for (let i=0;i<s.length;i++) {
  13. if (i<s.length-1&&tmap[s[i]]<tmap[s[i+1]]) {
  14. res -= tmap[s[i]]
  15. } else {
  16. res += tmap[s[i]]
  17. }
  18. }
  19. return res;
  20. };

思路

  1. 建立映射
  2. 罗马数字转整数的规律:如果左边小于右边则使用右边的值减去左边,反之则正常相加

例子

  1. IX=9,因为I = 1,X = 9,所以I < X,最后用X - I = 10 - 1 = 9
  2. LVIII, 因为L = 50 > V = 5 > I = 1,所以结果为L + V + I + I + I = 50+5+1+1+1=58