1.【力扣-TS解题】1、回文数04-23
收起
给你一个整数 x
,如果 x
是一个回文整数,返回 true
;否则,返回 false
。
回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
例如,121
是回文,而 123
不是
来源:力扣(LeetCode)
转为字符串
- 把数字转为字符串
- 反转整个字符串
- 对比两个字符串
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
不转为字符串
- 主要思路是对数字不断的进行取余运算(%10)
- 然后将原数字除以10(/10)
- 原数字<取余后的数字 截至
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