
LeetCode 9. 回文数题目难度简单题型分类数学、数字反转题目链接回文数给定整数x判断其是否为回文数是则返回true否则返回false。回文数是指从左向右和从右向左读都相同的整数。进阶不将整数转换为字符串来解决。示例输入x 121 输出true 输入x -121 输出false 解释负号导致正反读取不同。 输入x 10 输出false 解释反向读取为 01与原数不同。数据范围-2^31 x 2^31 - 1解题思路只反转数字的后半部分避免反转整个整数可能产生的溢出。负数不是回文数除0外末位为0的整数也不是回文数。不断取出x的末位追加到revertedNumber同时删除x的末位。当x revertedNumber时停止偶数位判断x revertedNumber例如1221最后两者均为12。奇数位判断x revertedNumber / 10忽略中间一位例如12321最后分别为12和123。0不会进入循环最终判断为回文数。时间复杂度O(d)其中d为整数的十进制位数。空间复杂度O(1)JavaclassSolution{publicbooleanisPalindrome(intx){if(x0||(x%100x!0)){returnfalse;}intrevertedNumber0;while(xrevertedNumber){revertedNumberrevertedNumber*10x%10;x/10;}returnxrevertedNumber||xrevertedNumber/10;}}CclassSolution{public:boolisPalindrome(intx){if(x0||(x%100x!0)){returnfalse;}intrevertedNumber0;while(xrevertedNumber){revertedNumberrevertedNumber*10x%10;x/10;}returnxrevertedNumber||xrevertedNumber/10;}};Python 3classSolution:defisPalindrome(self,x:int)-bool:ifx0or(x%100andx!0):returnFalserevertedNumber0whilexrevertedNumber:revertedNumberrevertedNumber*10x%10x//10returnxrevertedNumberorxrevertedNumber//10