Palindrome Number(回文串)

本文介绍了一种不使用额外空间判断整数是否为回文串的方法,并提供了两种实现思路,通过比较首尾元素来确定回文特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目:

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

分析:

该题目来源于leetcode。回文串是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。当然整数形式的回文串也是类似的。但负数不是回文串。两种思路:

  1. 按定义来,依次比较串的首尾,直到中间相隔1个或0个元素(取决于整数是奇数位数还是偶数位数)。优点是当不是回文串时,可以很快发现。如果是回文串,则必须比较全部位数。
  2. 根据回文串的特点,正反序,其数是相同的。优点是不必按位数来判断。

代码:

<span style="font-size:12px;font-weight: normal;">class Solution {
public:
	bool isPalindrome(int x) {
		vector<int> v;
		int i, j;
		if (x == 0)
			return true;

		while (x)
		{
			v.push_back(x % 10);
			x /= 10;
		}
		i = 0;
		j = v.size()-1;
		while (i < j)
		{
			if (v.at(i++) != v.at(j--))
				return false;
		}

		return true;
	}
};</span>

class Solution {
public:
	bool isPalindrome(int x) {
		int y = 0;
		int t = x;

		if (t < 0) //负数不是回文串
			return false;

		while (t)
		{
			y = y * 10 + t % 10;
			t /= 10;
		}
		if (y ^ x) //判断正反序是否相等
			return false;

		return true;
	}
};


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值