アルゴリズムの問題 - 整数への文字列

説明

あなたが機能を実装するために税引後営業利益、それは文字列を整数に変換することができます。
まず、空白文字で始まります関数は、これまでの最初の非空白文字を見つけるまで、必要であれば無用捨てます。
私たちは、整数の印として、後に連続した数字を上にして、可能な限り、最初の非空白文字が正または負の数であるシンボルのコンビネーションを見つけた場合、最初の非空白文字がある場合連続した数字が整数を形成するために結合された直後の図。
また、余分な文字を存在する可能性がある、有効な整数部分の後の文字列に加えて、これらの文字は無視することができ、彼らは機能に影響はありません。
注:最初の非空白文字の文字列が有効な整数文字列が空でない場合、または空白のみの文字列が含まれている場合、あなたは変換の機能である必要はありません。
いずれにしても、機能が効果的に変換できない場合は、0が返されます。
説明:
私たちは、環境のサイズは32ビット符号付き整数、[-231 231--1]の[値の範囲を記憶することができると仮定する。またはINT_MIN(-231) -値がこの範囲を超える場合、INT_MAX(1 231)を返します。

例1

入力: "42"
出力:42

例2

入力:「-42」
出力:-42
解説:最初の非空白文字「 - 」、それは負の符号です。私たちは、負の数と、すべての数字を組み合わせての背後にある行に表示され、最終的に取得するよう-42

例3

入力:「4193の言葉で、」
出力:4193
説明:次の文字が数値ではないので、デジタルOFF「3」に変換。

例4

入力:「言葉と987」
出力:0
説明:「W」最初の非空白文字が、それは正の数または負の数ではありません。したがって、変換を効果的に行うことができません。

例5

入力:「-91283472332」
出力:-2147483648
説明:番号「-91283472332」32ビット符号付き整数の範囲を超えます。だから、INT_MIN(-231)を返します。

答え

var myAtoi = function(str) {
    str = str.trim()
    if(!/^[+|-]?\d+/.test(str)) return 0
    let val = parseInt(str.match(/^[+|-]?\d+/))
    const min = -Math.pow(2, 31)
    const max = -min - 1
    return Math.max(Math.min(val, max), min)
};

分析

時間の複雑さ:O(n)は、

おすすめ

転載: www.cnblogs.com/zhoulixiangblog/p/12057406.html