1.题目
给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。
回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
例如,121 是回文,而 123 不是。
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/palindrome-number
2.我的收获
(1)根据回文数的定义选择只转换一半数字。
(2)要考虑全面,如负数和末尾为0的数。
(3)思考>编译。
3.优化解
class solution{
public:
bool isPalindrome(int x){
//先考虑负数、末尾为0的数以及0本身
if(x<0||x%10==0&&x!=0){
return false;
}
//结束条件是转换后的数字>=变化过的原数字【考虑奇数和偶数】
int revertedNumber=0;
while(x>revertedNumber){
revertedNumber=revertedNumber*10+x%10;
x/=10;
}
return x==revertedNumber||x==revertedNumber/10;
}