【力扣-TS解题】1、回文数

给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false

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

例如,121 是回文,而 123 不是

来源:力扣(LeetCode)

转为字符串

  1. 把数字转为字符串
  2. 反转整个字符串
  3. 对比两个字符串
function isPalindrome(x: number): boolean {
    if(x < 0 || (x % 10 === 0 && x !== 0)){
        return false;
    }
    const tmp:string = x.toString();
    let reverseStr = '';
    for (let i = tmp.length - 1; i >= 0; i--) {
        reverseStr += tmp[i];
    }
    return tmp === reverseStr;
}


const a = 123;
const b = 12321;

console.log(isPalindrome(a)); // false
console.log(isPalindrome(b)); // true

不转为字符串

  1. 主要思路是对数字不断的进行取余运算(%10)
  2. 然后将原数字除以10(/10)
  3. 原数字<取余后的数字 截至

image.png

function isPalindrome(x: number): boolean {
  if (x < 0 || (x % 10 === 0 && x !== 0)) {
    return false;
  }

  let reverseNumber = 0;
    while (reverseNumber < x) {
        const a = x % 10;
        reverseNumber = reverseNumber * 10 + (x % 10);
        x = Math.floor(x/10)
    }
  return x === reverseNumber || x === Math.floor(reverseNumber / 10);
}

const a = 123;
const b = 12321;

console.log(isPalindrome(a)); // false
console.log(isPalindrome(b)); // true
posted @ 2023-04-23 09:07  _zhiqiu  阅读(29)  评论(0编辑  收藏  举报