zoukankan      html  css  js  c++  java
  • leetcode 13. Integer to Roman

    使用eval,特别处理6个case

     var romanToInt = function (s) {
          const map = {
            'I': 1,
            'V': 5,
            'X': 10,
            'L': 50,
            'C': 100,
            'D': 500,
            'M': 1000
          }
          var fns = '0' + s.replace('CM', '+900').
      
            replace('CD', '+400').
            replace('XL': '+40').
            replace('XC', '+90').
            replace('IV', '+4').
            replace('IX', '+9').
            replace(/[C-X]/g, function (c) {
              return "+" + map[c]
            })
          return eval(fns)
        };
        console.log(intToRoman("MCMXCIV"))
    

    不使用eval

    var romanToInt = function (s) {
          const map = {
            'I': 1,
            'V': 5,
            'X': 10,
            'L': 50,
            'C': 100,
            'D': 500,
            'M': 1000
          }
          const specialMap = {
            CM: 900,
            CD: 400,
            XL: 40,
            XC: 90,
            IV: 4,
            IX: 9
          }
          var sum = 0
          for (var i = 0; i < s.length; i++) {
            var c = s[i];
            var more = c + s[i + 1];
            if (specialMap[more]) {
              sum += specialMap[more];
              i += 1;
              continue
            } else {
              sum += map[c]
            }
          }
          return sum
        };
    

    方法3, 我们可以观察一下 下一个字符代码的数值是否比当前的大,大则减去。

    var romanToInt = function (s) {
          const map = {
            'I': 1,
            'V': 5,
            'X': 10,
            'L': 50,
            'C': 100,
            'D': 500,
            'M': 1000
          }
          var sum = 0
          for (var i = 0; i < s.length; i++) {
            var c = s[i];
            var curr = map[c]
            var after = s[i + 1];
            if (map[after] > curr) {
              sum -= curr
            } else {
              sum += curr
            }
          }
          return sum
        };
    
  • 相关阅读:
    git Permissions 0777 for '/home/xxx/.ssh/id_rsa' are too open.
    Linux wc指令解析
    RK3288 开机动画旋转
    tp3.2 事务
    PHP实现动态获取函数参数的方法
    laravel 配置设置
    swoole 使用异步redis的前置条件
    php回调函数的概念及实例
    swoole 安装
    linux 源码安装PHP
  • 原文地址:https://www.cnblogs.com/rubylouvre/p/12040415.html
Copyright © 2011-2022 走看看