LeetCode刷题(3)--回文数

题目描述

判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。

示例 :
输入: 121
输出: true

输入: -121
输出: false

输入: 10
输出: false

解题思路

方法一:

将输入的整数转换为字符串,然后对字符串进行反转位置元素判断,循环数组大小一半次数,如果发现不一致的情况则返回false,循环结束返回true。

假设输入1221,那么将整数1221转换为字符串并存储,再对字符串1221进行反转位置比较,数组第一个元素和数组最后一个元素比较是否相同,数组第二个元素和数组倒数第二个元素比较是否相同,循环数组大小一半次数,循环结束都相同,则是回文数。

代码实现:

bool huiwenshu(int x,char a[],int n)
{
	if(x<0)
		return false;
	sprintf(a,"%d",x);
	for(int i=0;i<n/2;i++)
	{
		if(a[i]!=a[n-i-1])
		{
			return false;
		}
	}
	return true;
}

int main()
{
	char a[10];
	if(huiwenshu(1001,a,4)==true)
	{
		cout<<"true"<<endl;
	}
	else
	{
		cout<<"false"<<endl;
	}
	return 0;
}

结果:
在这里插入图片描述
如果输入1002,结果:
在这里插入图片描述

方法二:

判断整数反转的值和原值是否一致。

在上一篇已经讲解过整数反转方法了:链接: 整数反转
直接将反转的整数和原整数比对,如果相等则是回文数,反之则不是。

代码实现:

bool huiwen(int x)
{
	int y=x;//记录输入的整数
	long long r=0;
	if(x<0)//如果数负数
		return false;
	while(x!=0){
		r=r*10+x%10;//计算反转整数
		x/=10;
	}
	if(r!=y)	//判断反转整数和原整数是否一致
		return false;
	else
		return true;
}
int main()
{
	if(huiwen(1001)==true)
	{
		cout<<"true"<<endl;
	}
	else
	{
		cout<<"false"<<endl;
	}
	return 0;
}

结果:
在这里插入图片描述
如果输入1002
结果:
在这里插入图片描述

本篇文章主要讲解了判断回文数的两种方法,一种是将整数转换字符串,再进行反转位置元素比较;另一种是将反转整数和原整数比较,都是可以实现的。

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/baidu_41191295/article/details/112206101