# Reverse an Integer - via JavaScript

## Introduction


- 
This is the 3rd post in the series DS and Algo Practice - using examples and snippets.


- 
We would leverage our previous string reversal techniques to reverse and return back an integer.

## Problem Statement

- 
Reverse an integer, preserve the negative sign if it exists, remove the facing zeros, if they exist.


- 
For ex: *3000* would be reversed to *3* -> facing zeros need to be removed.


- 
*-90091* would be reversed to *-19009* -> negative sign needs to be persisted.

## Implementations

#### 1) A crude implementation

Input Integer -> Convert to String Array -> Search for negative sign -> Reverse the string -> Append the negative sign if the search yields true -> Convert the reversed string back to the integer.
```
function reverseInt(number) {
  if (!number || isNaN(number)) {
    return "Invalid format - input is not a integer";
  }
  let strArray = number.toString().split("");
  let isNegative = strArray.indexOf("-") !== -1 ? true : false;
  let reversedStr = strArray.reverse().join("");
  reversedStr = isNegative ? `${"-"}${reversedStr}` : reversedStr;
  return parseInt(reversedStr);
}

console.log(reverseInt(123));
console.log(reverseInt(-981));
console.log(reverseInt(500));
console.log(reverseInt(-900));
console.log(reverseInt(-900123));
console.log(reverseInt(""));
console.log(reverseInt("hello world"));
console.log(reverseInt(null));
console.log(reverseInt(NaN));
```

![image.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1637830798638/2-DFJGt2z.png)

#### 2) Using  [Math.sign(num)](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/sign)  method.

Math.sign(num) method returns +1/-1 depending upon the passed in number.

This method simplifies the above implementation.

Input Integer -> Convert to String Array and Reverse it -> Parse the reversed string back to Integer -> Multiply the reversed integer with Math.sign(Input Integer)

```
//Alternate approach using Math.sign() method
function reverseIntAlternate(number) {
  if (!number || isNaN(number)) {
    return "Invalid format - input is not a integer";
  }

  let reversedNumber = parseInt(number.toString().split("").reverse().join(""));

  return reversedNumber * Math.sign(number);
}

console.log(reverseIntAlternate(123));
console.log(reverseIntAlternate(-981));
console.log(reverseIntAlternate(500));
console.log(reverseIntAlternate(-900));
console.log(reverseIntAlternate(-900123));
console.log(reverseIntAlternate(""));
console.log(reverseIntAlternate("hello world"));
console.log(reverseIntAlternate(null));
console.log(reverseIntAlternate(NaN));
```

![image.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1637831160561/p6_L0GBTZ.png)

## Github link

Code is available at - https://github.com/anurag1302/dsalgo-javascript/blob/main/practice/reverse-int/index.js
