跳到主要内容

9.回文数

链接:9.回文数
难度:Easy
标签:数学
简介:给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 '.' 和 '*' 的正则表达式匹配。

题解 1 - javascript

  • 编辑时间:2020-04-12
  • 执行用时:248ms
  • 内存消耗:46.1MB
  • 编程语言:javascript
  • 解法介绍:转换成字符串进行翻转判断。
/**
* @param {number} x
* @return {boolean}
*/
var isPalindrome = x => x.toString() === x.toString().split('').reverse().join('');

题解 2 - typescript

  • 编辑时间:2020-06-10
  • 执行用时:208ms
  • 内存消耗:44.3MB
  • 编程语言:typescript
  • 解法介绍:转换成字符串依次判断。
function isPalindrome(x: number): boolean {
if (x < 0) return false;
if (x === 0) return true;
const str = x + '';
const len = str.length;
let i = -1,
j = len;
while (++i < --j) if (str[i] !== str[j]) return false;
return true;
}

题解 3 - typescript

  • 编辑时间:2020-06-10
  • 执行用时:220ms
  • 内存消耗:45.4MB
  • 编程语言:typescript
  • 解法介绍:转换成字符串进行翻转判断。
function isPalindrome(x: number): boolean {
return x.toString() === x.toString().split('').reverse().join('');
}

题解 4 - typescript

  • 编辑时间:2020-06-10
  • 执行用时:232ms
  • 内存消耗:45.8MB
  • 编程语言:typescript
  • 解法介绍:压栈后观察两数是否相等。
function isPalindrome(x: number): boolean {
if (x < 0) return false;
if (x < 10) return true;
let len = 0;
let temp = x;
while (temp !== 0) {
temp = ~~(temp / 10);
len++;
}
const stack = [];
temp = x;
while (stack.length < len >> 1) {
stack.push(temp % 10);
temp = ~~(temp / 10);
}
if ((len & 1) !== 0) temp = ~~(temp / 10);
const num = parseInt(stack.join(''));
return temp === num;
}

题解 5 - typescript

  • 编辑时间:2020-06-10
  • 执行用时:272ms
  • 内存消耗:45.8MB
  • 编程语言:typescript
  • 解法介绍:翻转一半的数字进行判断。
function isPalindrome(x: number): boolean {
if (x < 0 || (x % 10 === 0 && x !== 0)) return false;
let revertedNumber: number = 0;
while (x > revertedNumber) {
revertedNumber = revertedNumber * 10 + (x % 10);
x = ~~(x / 10);
}
return x === revertedNumber || x === ~~(revertedNumber / 10);
}