回文数 - 力扣
给你一个整数 x
,如果 x
是一个回文整数,返回 true
;否则,返回 false
。
回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
- 例如,
121
是回文,而123
不是。
示例 1:
输入:x = 121 输出:true
示例 2:
输入:x = -121 输出:false 解释:从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
示例 3:
输入:x = 10 输出:false 解释:从右向左读, 为 01 。因此它不是一个回文数。
提示:
-231 <= x <= 231 - 1
思路:
1.特殊情况处理
-
如果
x
是负数,直接返回false
。 -
如果
x
的最后一位是 0 且x
不是 0,直接返回false
。
2.转换为字符串
- 将数字
x
转换为字符串。 - 反转字符串。
- 比较原字符串和反转后的字符串是否相同。
思考:
1.是否要将字符再转回数字
回文数的定义是“正序和倒序读相同”,因此直接比较字符串形式已经足够;如果转换回数字,前导零会被丢弃(如 "01210" → 1210
),会导致误判。
2.是否要检查溢出
字符串操作不涉及数值计算,只是字符的比较,因此不存在溢出问题。
代码实现:
/*** @param {number} x* @return {boolean}*/
var isPalindrome = function (x) {if (x < 0 || (x % 10 === 0 && x !== 0))return false;// const str = x.toString();// const revStr = str.split('').reverse().join('');// return str === revStr;return x.toString() === x.toString().split('').reverse().join('');
};