题目描述
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
示例 1:
输入: 121 输出: true
示例 2:
输入: -121 输出: false
解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
示例 3:
输入: 10 输出: false
解释: 从右向左读, 为 01 。因此它不是一个回文数。
进阶:
你能不将整数转为字符串来解决这个问题吗?
简答:
class Solution { public: bool isPalindrome(int x) { if (x < 0) return false; if (x < 10) return true; int bitnum = 0, j = 0,i=0; int y = x, y_left = x; int left_num, right_num; while (y != 0) { y = y/10; bitnum++; } if (bitnum == 1 ||bitnum == 0) return false; y = x; int bit_sum=bitnum / 2; while (j <= bit_sum) { --bitnum; right_num = y % 10; i= pow(10, bitnum); left_num = y_left /i; y_left %= i; y = y / 10; if (right_num != left_num) return false; j++; } return true; } };
评论前必须登录!