leetcode 9 Palindrome Number 回文数

描述:

判定一个整数是否回文数(注意,负数必定不是回文数,由于是根据读音来判断的)。

要求空间复杂度O(1)。

解决:

一:直观的思路是一个一个对比。

二:反转整数,当反转到反转的数已经大于被反转数时,可判断是否回文。

显然二效率高。

// 一个个对比,直观思路。
bool
isPalindrome(int x) { if (x < 0) return false; int bits = 0; int bt = x; while (bt) { bt /= 10; bits++; } if (bits < 2) return true; while (bits > 1) { int temp = (int)pow(10, bits - 1); if (x / temp != x % 10) return false; x = x % temp / 10; bits -= 2; } return true; }

 

// 反转一半
bool
isPalindrome(int x) { if (x < 0) return false; int bits = 0; int bt = x; while (bt) { bt /= 10; bits++; } if (bits < 2) return true; while (bits > 1) { int temp = (int)pow(10, bits - 1); if (x / temp != x % 10) return false; x = x % temp / 10; bits -= 2; } return true; }

 

posted on 2018-01-21 23:50  willaty  阅读(155)  评论(0编辑  收藏  举报

导航