leetcode面接問題解題-ローマ数字回転整数-JS版


最近いくつかの先端の面接問題を復習して、leetcodeの上でブラシをかけて、簡単な初めから、更にゆっくりと深く入り込んで、昨日1つの問題に出会って、とても面白くて、Javascriptバージョンの解題の構想、「簡単」レベルの問題ですが、しかしやはり分かち合う価値があって、大物たちが自分の実現方式を補充することを歓迎します.
标题:ローマ数字回転整数-JS版
ローマ数字には、I、V、X、L、C、D、Mの7文字が含まれています.

              
I             1
V             5
X             10
L             50
C             100
D             500
M             1000


例えば、ローマ数字2はIIと書かれており、2つの並列の1である.12はXIIと書きます.つまりX+IIです.27 XXVIIと書くと、XX+V+IIとなります.
通常、ローマ数字の中で小さい数字は大きな数字の右側にあります.しかし、例えば4はIIIではなくIVと書くという特例もある.数字1は数字5の左側にあり、表す数は大数5から小数1を減らした数値4に等しい.同様に、数字9はIXとして表される.この特殊なルールは、次の6つの場合にのみ適用されます.
IはV(5)とX(10)の左側に置いて4と9を表すことができる.XはL(50)とC(100)の左側に置いて40と90を表すことができる.CはD(500)とM(1000)の左側に置いて400と900を表すことができる.ローマ数字を指定し、整数に変換します.入力は1~3999の範囲であることを確認します.
  • 例1:
  •   : "III"
      : 3
    
    
  • 例2:
  •   : "IV"
      : 4
    
  • 例3:
  •   : "IX"
      : 9
    
  • 例4:
  •   : "LVIII"
      : 58
      : L = 50, V= 5, III = 3.
    
  • 例5:
  •   : "MCMXCIV"
      : 1994
      : M = 1000, CM = 900, XC = 90, IV = 4.
    
    

    见ているのはとても简単で、やはり长い间考えて、あまりに料理して、后で多く练习して、最后に2つの考えを提供しました~大物达を歓迎して补充します!!構想:オブジェクトobjを確立してローマ数に対応する数値を格納し、パラメータsが切断した後の対応する値を見て、左から右に遍歴し、現在の値が次の値より小さい場合は減算し、そうでない場合は加算する.
  • 例一:
  • var romanToInt = function(s) {
      var obj = {
          I:1,
          V:5,
          X:10,
          L:50,
          C:100,
          D:500,
          M:1000 
      };
      var result= 0;
      s.split("").map((k,v,arr)=>{
        var next = obj[arr[v+1]] || 0;
        var active = obj[arr[v]];
        
        if(active < next){
          result-= active;
        }else {
          result+=active;
        };
        return k;
      });
      return result;
    };
    
  • 例2:
  • var romanToInt = function(s) {
      var obj = {
        I:1,
        V:5,
        X:10,
        L:50,
        C:100,
        D:500,
        M:1000 
      };
      var result= 0;
      var arr = s.split("");
      for(var i=arr.length-1;i>=0;i--){
        result+=obj[arr[i]];
        if(i>0 && obj[arr[i]] > obj[arr[i-1]]){
            result-=obj[arr[--i]];
        }
    
      };
      return result;
    };
    

    おすすめ読書
    vuereactjavaなどのリソース共有チームが解散しましたが、私たちはどうすればいいですか?Webpack 4配置详细解之慢咬细咽小プログラムプロジェクトの完成プロジェクトのボスは私に6 k给料を追加しました~面接で踏んだ穴は、すべてここにあります~あなたがすべき先端性能の最适化の総括大全!localStorageの有効期限を設定するにはどうすればいいですか?アニメーションは少し-どのようにCSS 3であなたの3 Dのキューブを理解することを描きますか?アニメーションは少し-ハンドルはあなたにどのように1台のスポーツカーSVG Sprites Iconの使用の技巧を描くことを教えます
    主な推奨事項:
  • ?私たちの週刊誌の無料のプログラミングの書籍、良い文は
  • をまとめます
  • 蘇南のブログ
  • 强烈阿里云产品推荐,最高1888云产品通用代金券,免费送哦~
  • 著者:蘇南-首席穴埋め官
    リンク:http://susouth.com/
    交流:912594095、公衆番号:honeyBadger8本文はオリジナルで、著作権は作者の所有に帰属する.商業転載は@IT· に連絡して許可を得てください.非商業転載は元のリンクと出典を明記してください.