I have written the following code to reverse an integer in JavaScript. It works fine but returns a 0 when given an input of -900000. Does anyone know what could be wrong?
JavaScript
x
38
38
1
/**
2
* @param {number} x
3
* @return {number}
4
*/
5
var reverse = function(x) {
6
var negative_number= false;
7
var k;
8
var new_string;
9
if(x<0){
10
negative_number = true;
11
x=Math.abs(x);
12
}
13
var n = x.toString(); // convert from number to string
14
// Step 1. Use the split() method to return a new array
15
var splitString = n.split(""); // var splitString = "hello".split("");
16
// ["h", "e", "l", "l", "o"]
17
if (negative_number)
18
{
19
for (var i=0; i< splitString.length-1; i++)
20
{
21
splitString[i]=splitString[i+1];
22
}
23
}
24
// Step 2. Use the reverse() method to reverse the new created array
25
var reverseArray = splitString.reverse(); // var reverseArray = ["h", "e", "l", "l", "o"].reverse();
26
// ["o", "l", "l", "e", "h"]
27
28
// Step 3. Use the join() method to join all elements of the array into a string
29
var joinArray = reverseArray.join(""); // var joinArray = ["o", "l", "l", "e", "h"].join("");
30
// "olleh"
31
//return joinArray;
32
var number = Number(joinArray);
33
if (negative_number)
34
number= -Math.abs(number);
35
//Step 4. Return the reversed string
36
return number;
37
};
38
Advertisement
Answer
You don’t need to slice off the -
sign from negative numbers, you’ve already taken the absolute value as x
. Drop that loop that moves digits around and destroys your values.