LeetCode_回文对称数

目录

题目:

回文数是正着读与倒着读都一样的数,比如1221,343是回文数,433不是回文数。写一个函数判断i个数是不是回文数。

解析:


题目:

回文数是正着读与倒着读都一样的数,比如1221,343是回文数,433不是回文数。写一个函数判断i个数是不是回文数。


解析:

要判断一个数是不是回文数就把它倒过来看是否和原来的数相等。

bool isPalindrome(int x)
{
	int tmp = 0;
	int num = x;
	if (x < 0)
	{
		return false;
	}
	while (num)
	{
		tmp = tmp * 10 + num % 10;
		num /= 10;
	}
	if (tmp == x)
	{
		return true;
	}
	else
	{
		return false;
	}
}

首先函数的返回类型是bool,传一个参数过去就行了,负数不是回文数这些就不过多叙述了,这段代码的关键点在:

while (num)
{
        tmp = tmp * 10 + num % 10;
        num /= 10;
}

这个循环很巧妙。每次num都被除10,而每次循环tmp都要乘10并且加上num模上10,当最后一次num/10=0,循环结束。

OK提交!!!!


 ??????????????????????????????????????????

仔细一看好家伙x的范围是-2的31次方减1到-2的31次方减1,int 类型满足不了它了那就用long

过辣!!!!!


但是还不够简短啊,还有什么可以优化的地方呢??(冥思苦想……)

哦~~~~~~~~~~~~~

返回的不是bool类型吗?那就不用if else了,直接return x==tmp;


bool isPalindrome(int x)
{
	long tmp = 0;
	long num = x;
	if (x < 0)
		return false;
	while (num)
	{
		tmp = tmp * 10 + num % 10;
		num /= 10;
	}
	return x == tmp;
}

过辣!!!!!


朋友们平时在刷题写代码的时候一定要去寻找最优解,不断的否定再改正,提升自己的思维。

如果有什么错误,欢迎指出,如果有帮助,点个赞,谢谢。

posted @ 2024-02-24 16:43  QinMou~  阅读(4)  评论(0)    收藏  举报  来源