关闭

leetcode 009 —— Palindrome Number

119人阅读 评论(0) 收藏 举报
分类:

Determine whether an integer is a palindrome. Do this without extra space.


题意:判断一个整数是否为回文数  

class Solution {
public:
	bool isPalindrome(int x) {

		// if(x==-2147483648)
		if (x<0) return false;
		long long n = x > 0 ? x : (0 - x);
		int cnt = 0;
		long long m = n;
		while (m){				//计算位数
			m = m / 10;
		<span style="white-space:pre">	</span>cnt++;
		}
		if (n < 10)<span style="white-space:pre">	</span>return true;  	//cout << "yes" << endl;							
		while (n){
			long long a = n / pow(10, cnt - 1);    <span style="white-space:pre">	</span>//a代表最高位
			long long b = n % 10;		<span style="white-space:pre">	</span>//b代表最低位
			if (a == b){
				n = n % (int)pow(10, cnt - 1) / 10;
				cnt-=2;
				if (n == 0 && cnt>1)				//考虑到8008 这种情况
					return true;
				if (n < 10 && cnt <= 1)				//考虑到818 这种情况
					return true;				
			}
			else									//cout << "yes" << endl;	
				return false; 
		}
	}
};


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:25766次
    • 积分:2054
    • 等级:
    • 排名:第18652名
    • 原创:188篇
    • 转载:0篇
    • 译文:0篇
    • 评论:1条
    最新评论