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
これはleetcode上の7番の問題で、難易度はeasyで、与えられた数字の数値部分を反転させる場合、2点に注意する必要があります.、 です.、32ビット この問題には二つの考えがあります.、配列法:数字を配列に変えて、各要素は一つの桁を保存して、そして配列要素の順序を反転させて、最後に配列を数字に変えます.jsの配列の操作はやはり便利です.この時に上の注意点を考慮しなければなりません. 、モールド十法:与えられた数字 js実現
配列:
配列法も問題を解決することができますが、数字に対する処理は数桁の角度から問題を考えると目の前が明るくなるかもしれません.
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
interger
の取得範囲result = 0
を10で割った後、与えられた数字を最低のビットとして、商は新しい数字n
、n
を初期化し、このようにすると、毎回得られた最低のビットは循環に従って連続的に数位を上げ、それによって逆順のresult = result + *10
を得る.配列:
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;
};
締め括りをつける配列法も問題を解決することができますが、数字に対する処理は数桁の角度から問題を考えると目の前が明るくなるかもしれません.