Skip to content

Latest commit

 

History

History
80 lines (61 loc) · 1.49 KB

9.回文数.md

File metadata and controls

80 lines (61 loc) · 1.49 KB

题目

判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。

示例 1:
输入: 121
输出: true

示例 2:
输入: -121
输出: false
解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。

示例 3:
输入: 10
输出: false
解释: 从右向左读, 为 01 。因此它不是一个回文数。

翻转字符串,比较两个字符串是否相同

var isPalindrome = function(x) {
  if (x < 0) return false

  let str = x + ''
  let len = str.length

  let start = 0
  let end = len - 1
  while(start < end) {
    if (str[start] !== str[end]) return false
    start++
    end--
  }

  return true
}

翻转数字,比较两个数字是否相等

var isPalindrome = function(x) {
  if (x < 0) return false
  let fakeX = x
  let reverseX = 0

  while (fakeX) {
    reverseX = reverseX*10 + fakeX % 10
    fakeX = Math.trunc(fakeX / 10)
  }

  if (reverseX === x) {
    return true
  }

  return false
}

翻转一半的数字(或字符串),因为是回文,只比较一半就可以得到结果,这里只写了数字版本

var isPalindrome = function(x) {
  if (x < 0 || (x % 10 === 0 && x !== 0)) return false
  let fakeX = x
  let reverseX = 0

  while (fakeX > reverseX) {
    reverseX = reverseX*10 + fakeX % 10
    fakeX = Math.trunc(fakeX / 10)
  }

  if (reverseX === fakeX || Math.trunc(reverseX / 10) === fakeX) return true

  return false
}