class Solution { public: bool isPalindrome(int x) { if (x < 0) return false; int pow = 1; int t = x; int cnt = 1; while(t /= 10) { pow *= 10; cnt++; } t = x; cnt = cnt / 2; while (cnt--) { if ((t / pow % 10) != t % 10) return false; t = t / 10; pow /= 100; } return true; } };
500ms+,怎么会那么长时间
第二轮:
Determine whether an integer is a palindrome. Do this without extra space.
还是出了点差错,负数不算回文
// 19:50 class Solution { public: bool isPalindrome(int x) { if (x < 0) return false; int n = x; int cnt = 0; do { cnt++; x = x/10; } while (x); int tens = 1; for (int i=1; i<cnt; i++) { tens = tens*10; } for (int i=cnt/2-1; i>=0; i--) { int a = n / tens; int b = n % 10; n = n - a * tens; n = n / 10; if (a != b) { return false; } tens = tens/100; } return true; } };