Skip to main content
Tweeted twitter.com/StackCodeReview/status/1120069843712081920
Became Hot Network Question
added 1 character in body
Source Link
thadeuszlay
  • 4k
  • 29
  • 53

The task

Determine whether an integer is a palindrome. An integer is a palindrome when it reads the same backward as forward.

Example 1:

Input: 121 Output: true

Example 2:

Input: -121 Output: false Explanation: From left to right, it reads -121. From right to left, it becomes 121-. Therefore it is not a palindrome.

Example 3:

Input: 10 Output: false Explanation: Reads 01 from right to left. Therefore it is not a palindrome. Follow up:

Could you solve it without converting the integer to a string?

My solution with converting number to string

const isPalindrome = n => n >= 0 && Number([...`${n}`].reverse().join("")) === n;

console.log(isPalindrome(121));

My solution without converting number to string

const isPalindrome2 = n => {
  if (n < 0) { return false; }
  let num = Math.abs(n);
  const arr = [];
  let i = 1;
  while (num > 0) {
    const min = num % (10 ** i);
    num = num - min;
    i++;
    arr.push(min);
  }
  i = i - 2;
  let j = 0;
  return n === arr.reduce((res, x) => {
    const add = (x/ (10 ** j)) * (10 ** i);
    res += add;
    i--;
    j++;
    return res;
  }, 0);
};

console.log(isPalindromeisPalindrome2(121));

The task

Determine whether an integer is a palindrome. An integer is a palindrome when it reads the same backward as forward.

Example 1:

Input: 121 Output: true

Example 2:

Input: -121 Output: false Explanation: From left to right, it reads -121. From right to left, it becomes 121-. Therefore it is not a palindrome.

Example 3:

Input: 10 Output: false Explanation: Reads 01 from right to left. Therefore it is not a palindrome. Follow up:

Could you solve it without converting the integer to a string?

My solution

const isPalindrome = n => {
  if (n < 0) { return false; }
  let num = Math.abs(n);
  const arr = [];
  let i = 1;
  while (num > 0) {
    const min = num % (10 ** i);
    num = num - min;
    i++;
    arr.push(min);
  }
  i = i - 2;
  let j = 0;
  return n === arr.reduce((res, x) => {
    const add = (x/ (10 ** j)) * (10 ** i);
    res += add;
    i--;
    j++;
    return res;
  }, 0);
};

console.log(isPalindrome(121));

The task

Determine whether an integer is a palindrome. An integer is a palindrome when it reads the same backward as forward.

Example 1:

Input: 121 Output: true

Example 2:

Input: -121 Output: false Explanation: From left to right, it reads -121. From right to left, it becomes 121-. Therefore it is not a palindrome.

Example 3:

Input: 10 Output: false Explanation: Reads 01 from right to left. Therefore it is not a palindrome. Follow up:

Could you solve it without converting the integer to a string?

My solution with converting number to string

const isPalindrome = n => n >= 0 && Number([...`${n}`].reverse().join("")) === n;

console.log(isPalindrome(121));

My solution without converting number to string

const isPalindrome2 = n => {
  if (n < 0) { return false; }
  let num = Math.abs(n);
  const arr = [];
  let i = 1;
  while (num > 0) {
    const min = num % (10 ** i);
    num = num - min;
    i++;
    arr.push(min);
  }
  i = i - 2;
  let j = 0;
  return n === arr.reduce((res, x) => {
    const add = (x/ (10 ** j)) * (10 ** i);
    res += add;
    i--;
    j++;
    return res;
  }, 0);
};

console.log(isPalindrome2(121));
added 1 character in body
Source Link
thadeuszlay
  • 4k
  • 29
  • 53

The task

Determine whether an integer is a palindrome. An integer is a palindrome when it reads the same backward as forward.

Example 1:

Input: 121 Output: true

Example 2:

Input: -121 Output: false Explanation: From left to right, it reads -121. From right to left, it becomes 121-. Therefore it is not a palindrome.

Example 3:

Input: 10 Output: false Explanation: Reads 01 from right to left. Therefore it is not a palindrome. Follow up:

CoudCould you solve it without converting the integer to a string?

My solution

const isPalindrome = n => {
  if (n < 0) { return false; }
  let num = Math.abs(n);
  const arr = [];
  let i = 1;
  while (num > 0) {
    const min = num % (10 ** i);
    num = num - min;
    i++;
    arr.push(min);
  }
  i = i - 2;
  let j = 0;
  return n === arr.reduce((res, x) => {
    const add = (x/ (10 ** j)) * (10 ** i);
    res += add;
    i--;
    j++;
    return res;
  }, 0);
};

console.log(isPalindrome(121));

The task

Determine whether an integer is a palindrome. An integer is a palindrome when it reads the same backward as forward.

Example 1:

Input: 121 Output: true

Example 2:

Input: -121 Output: false Explanation: From left to right, it reads -121. From right to left, it becomes 121-. Therefore it is not a palindrome.

Example 3:

Input: 10 Output: false Explanation: Reads 01 from right to left. Therefore it is not a palindrome. Follow up:

Coud you solve it without converting the integer to a string?

My solution

const isPalindrome = n => {
  if (n < 0) { return false; }
  let num = Math.abs(n);
  const arr = [];
  let i = 1;
  while (num > 0) {
    const min = num % (10 ** i);
    num = num - min;
    i++;
    arr.push(min);
  }
  i = i - 2;
  let j = 0;
  return n === arr.reduce((res, x) => {
    const add = (x/ (10 ** j)) * (10 ** i);
    res += add;
    i--;
    j++;
    return res;
  }, 0);
};

console.log(isPalindrome(121));

The task

Determine whether an integer is a palindrome. An integer is a palindrome when it reads the same backward as forward.

Example 1:

Input: 121 Output: true

Example 2:

Input: -121 Output: false Explanation: From left to right, it reads -121. From right to left, it becomes 121-. Therefore it is not a palindrome.

Example 3:

Input: 10 Output: false Explanation: Reads 01 from right to left. Therefore it is not a palindrome. Follow up:

Could you solve it without converting the integer to a string?

My solution

const isPalindrome = n => {
  if (n < 0) { return false; }
  let num = Math.abs(n);
  const arr = [];
  let i = 1;
  while (num > 0) {
    const min = num % (10 ** i);
    num = num - min;
    i++;
    arr.push(min);
  }
  i = i - 2;
  let j = 0;
  return n === arr.reduce((res, x) => {
    const add = (x/ (10 ** j)) * (10 ** i);
    res += add;
    i--;
    j++;
    return res;
  }, 0);
};

console.log(isPalindrome(121));
Source Link
thadeuszlay
  • 4k
  • 29
  • 53

Determine whether an integer is a palindrome

The task

Determine whether an integer is a palindrome. An integer is a palindrome when it reads the same backward as forward.

Example 1:

Input: 121 Output: true

Example 2:

Input: -121 Output: false Explanation: From left to right, it reads -121. From right to left, it becomes 121-. Therefore it is not a palindrome.

Example 3:

Input: 10 Output: false Explanation: Reads 01 from right to left. Therefore it is not a palindrome. Follow up:

Coud you solve it without converting the integer to a string?

My solution

const isPalindrome = n => {
  if (n < 0) { return false; }
  let num = Math.abs(n);
  const arr = [];
  let i = 1;
  while (num > 0) {
    const min = num % (10 ** i);
    num = num - min;
    i++;
    arr.push(min);
  }
  i = i - 2;
  let j = 0;
  return n === arr.reduce((res, x) => {
    const add = (x/ (10 ** j)) * (10 ** i);
    res += add;
    i--;
    j++;
    return res;
  }, 0);
};

console.log(isPalindrome(121));