leetcode 9 Palindrome Number

本文介绍了一种不使用额外空间判断整数是否为回文数的算法实现,重点讲解了如何通过数学运算来逐位比较整数的首位数字。

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

class Solution {
public:
bool isPalindrome(int x) {
//int div = 1;
//if (x < 0)
// return false;
//else if (x == 0)
// return true;
//else
//{
// while (x / div >= 10) div *= 10;
// while (x>0)
// {
// if (div < 1)
// return true;
// int left = x / div;
// int right = x % 10;
// if (left == right)                        //是==不是=
// {
// x = (x - left*div - right) / 10;        //忘了再除以10,不行的
// div /= 100;
// }
// else
// return false;
// }
//}
    
//网上找的方法
if (x < 0) return false;
int div = 1;
while (x / div >= 10) div *= 10;
while (x > 0) {
int left = x / div;
int right = x % 10;
if (left != right) return false;
x = (x % div) / 10;
div /= 100;
}
return true;
}

};

这个自己写的被注释掉了,提交一直有问题,不知道怎么回事。下面是网上找的。

这个题首先要注意的是,不能占用额外空间,所以不能转换为字符串。在一个是比如1000021这种的数字,要考虑去掉首尾的数字后,计算机默认的是2,但是我们需要比较的是第二位的0和倒数第二的2,所以要提取出这两位的数字,要用/和%。其中/要除以一个事先算好的数,程序中是div。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值