题目链接
给你一个整数x
,如果x
是一个回文整数,返回 true ;否则,返回 false 。
回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
例如,121 是回文,而 123 不是。
示例 1:
输入:x = 121
输出:true
示例 2:
输入:x = -121
输出:false
解释:从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
示例 3:
输入:x = 10
输出:false
解释:从右向左读, 为 01 。因此它不是一个回文数。
提示:
进阶:你能不将整数转为字符串来解决这个问题吗?
回文的定义是按照中心轴翻转后是一致的,前有回文串的判定,那么可以将整数直接转成string
,通过回文的判断翻转前后两者是一致的。
class Solution {
public:bool isPalindrome(int x) {// 转成stringstring s = to_string(x);string s1 = s;reverse(s1.begin(), s1.end());return s==s1;}
};
若是不转换成字符串,那就需要将整数中的每一个数位上的数取出,放到翻转后对应的位置上,这里需要注意的是首先对负数判定,直接判定负数为不符合的。
class Solution {
public:bool isPalindrome(int x) {if (x < 0) return false;long y = 0;int x_tmp = x;while (x > 0) {y = y*10+(x%10);x /= 10;}return x_tmp == y;}
};
注意:这里的y可能会超出int的表示范围,导致提交错误。