恩 注意观察输入是int X 说明有范围 并且有正负 特殊情况特判并且防溢出即可 负数,xxx0不会是回文数。 0是回文数 思路 先想itoa转char*然后头尾对比。但是时间空间开销有。 然后想直接int mod取首位但是首部不好取。 那就直接从尾部开始,取x的后一半翻转,对比前半部分。 辣么怎么判断到了一半奥 一般情况可以搞一个table判断先判断x的位数: final static int [] sizeTable = { 9, 99, 999, 9999, 99999, 999999, 9999999, 99999999, 999999999, Integer.MAX_VALUE }; // Requires positive x static int stringSize(int x) { for (int i=0; ; i++) if (x <= sizeTable[i]) return i+1; } 这里简单的处理 while(rest>tail)即可,因为到达中间时位数多一位 这样奇数位时只需考虑tail后几位 偶数位时,tail会比rest多两位(假如不是回文数) class Solution { public: bool isPalindrome(int x) { int tail=0; if(x==0) return true; if(x<0||(x%10=