javascript初探LeetCodeの7.Reverse Integer

1639 ワード

テーマ
Reverse digits of an integer.The input is assiumed to be a 32-bit signed integer.Your function shound return 0 when the reversed integer overflows.
example
Example1: x = 123, return 321
Example2: x = -123, return -321
分析
これはleetcode上の7番の問題で、難易度はeasyで、与えられた数字の数値部分を反転させる場合、2点に注意する必要があります.
  • 1000のような数字で、反転した後は0001ではなく、1
  • です.
  • 、32ビットintergerの取得範囲
  • この問題には二つの考えがあります.
  • 、配列法:数字を配列に変えて、各要素は一つの桁を保存して、そして配列要素の順序を反転させて、最後に配列を数字に変えます.jsの配列の操作はやはり便利です.この時に上の注意点を考慮しなければなりません.
  • 、モールド十法:与えられた数字result = 0を10で割った後、与えられた数字を最低のビットとして、商は新しい数字nnを初期化し、このようにすると、毎回得られた最低のビットは循環に従って連続的に数位を上げ、それによって逆順のresult = result + *10を得る.
  • js実現
    配列:
    var reverse = function(x) {
        var symbol = '+';
        var arr = (x + '').split('');
        if(arr[0] == '-'){
            symbol = arr.shift(); 
        }
        arr = arr.reverse();
        while(arr[0] == 0){
            arr.shift();
        }
        arr.unshift(symbol);
        var y = parseInt(arr.join(''));
        return y >= -Math.pow(2,31) && y <= Math.pow(2,31) - 1 ? y : 0;
        
    };
    
    モールド法:
    var reverse = function(x) {
        var y = Math.abs(x);
        var result = 0;
        while(y > 0){
            result = result * 10 + y % 10;
            y = parseInt(y / 10);
        }
        result = x < 0 ? -result : result;
        return result >= -Math.pow(2,31) && result <= Math.pow(2,31) - 1 ? result : 0;
    };
    
    
    締め括りをつける
    配列法も問題を解決することができますが、数字に対する処理は数桁の角度から問題を考えると目の前が明るくなるかもしれません.