0

Palindrome Number - Algorithm JavaScript - Easy

1.Description

Given an integer number, return true if number is palindrome integer. Example 1:

Input: x = 121
Output: true
Explanation: 121 reads as 121 from left to right and from right to left.

Example 2:

Input: x = -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: x = 10
Output: false
Explanation: Reads 01 from right to left. Therefore it is not a palindrome.

2.Solution

My algorithm

Thuật toán mà mình thấy ổn nhất là đảo số dư lên đầu, cách đó rất nhanh.

var isPalindrome = function (x) {
  if (x < 0 || (x > 0 && x % 10 === 0)) {
    return false;
  }
  var reversedNum = 0;
  var xcopy = x;
  while (xcopy > 0) {
    reversedNum = reversedNum * 10 + (xcopy % 10);
    xcopy = (xcopy - (xcopy % 10)) / 10;
  }
  return x === reversedNum;
};

Còn đây là thuật toán hiện lên trong đầu mình khi đọc đề, mình sẽ đổi nó về string để so sánh.

var isPalindrome = function (x) {
  var quantity = x.toString().length;
  for (var i = 0; i < Math.floor(quantity / 2); i++) {
    if ((x.toString()[i] !== x.toString()[quantity - 1 - i]) || x < 0){
      return false;
    }
  }
  return true;
};

Optimal Solution

Còn đây là thuật toán mình chôm được trên mạng, cùng là một cách nhưng mình làm vấn đề rắc rối hơn 😃)

var isPalindrome = function(x) {
    let text = x.toString();
    for(var i=0;i<text.length/2;i++)
    {
        if(text.charAt(i) != text.charAt(text.length-1-i))
        {
            return false;
        }
    }
    return true;
};

All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí