[leetcode 9] Palindrome Number

判断整数是否为回文数
本文介绍了一种不使用额外空间判断整数是否为回文数的方法。通过对比整数的最高位与最低位,并逐步去除这些位来完成验证。文章提供了详细的算法思路及C++实现代码。

题目:

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

思路:

1.本题目比较简单,所谓回文数,则表示该数可按照中心位置进行“折叠”;
2.本题目解决方案为依次取当前数据的最高位(L)与最低位(R),并比较之,取最低位比较简单,R=x/10,在取最高位之前,需要计算出一个值idx(如1000),使得10>x/idx>0,于是L=x/idx;
3.比较L,R,若L!=R,则程序可以退出,否则,去掉x的L与R,构造新的x,比较新的L与R,去掉x的最高位:x=x-(x/idx)*idx,去掉最低位,x=x/10,新的x构造好后,由于x的位数少了两位,于是idx=idx/100;
4.程序执行到最后,或者中途退出,返回false,或者x=0,返回true。

代码:

class Solution{
public:
	bool isPalindrome(int x){
		if(x<0)
			return false;
		if(x<10)
			return true;
		int idx=1;
		while((x/idx)>=10)
			idx*=10;
		while(x)
		{
            int l=x/idx;
			int r=x%10;
			if(l!=r)
				return false;
			else
			{
				x=(x-(x/idx)*idx)/10;
				idx/=100;
			}
		}
		return true;
	}
};


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值