经典算法回文数问题————leetcode第9题详解

回文数是一个经典老题了,这个概念在我小学数学奥赛时就已经接触过了,现在是和编程结合起来,变得更加有意思。(以下来自leetcode第9题)
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。

示例 1:
输入: 121
输出: true

示例 2:
输入: -121
输出: false
解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。

示例 3:
输入: 10
输出: false
解释: 从右向左读, 为 01 。因此它不是一个回文数。

解:
这道题的主体很像leetcode第7题,一样的套路,首先我们先判断是否是个负数,如果是负数,那么直接返回false,因为其绝对不是一个回文数。
此时注意一个点,那就是溢出问题,因为我们不确定x是否是一个回文数,假如它是,那么x倒过来也会在int范围内,假如其不是一个回文数,那么就有可能会溢出,但是我们只需要定义count为long即可,因为int无论如何反过来,都不可能超出long的范围。所以代码如下:

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

}

that’s all.

原创文章 24 获赞 2 访问量 916

猜你喜欢

转载自blog.csdn.net/weixin_43653187/article/details/105375295