[leetcode]回文数

数据结构课老师布置了判断回文串的思考题,看到LeetCode上这道题,就拿来做了。

这道题是判断回文数,我的第一反应是将数字转换成字符串。然后再用判断字符串是不是回文串的方法做,使用双指针、堆栈等各种方法。

但是判断回文数其实可以利用数字的特点,根本不需要再额外开辟空间。

这道题可以直接反转数字的一半然后和原数的前一半比较。但是怎么知道反转了数字的一半长呢?

当反转后的数字超过了不断除以10后的原数就可以认为反转了数字的一半长。

下面是代码部分

bool isPalindrome(int x) {
//对于负数和末尾是0的数字单独处理
if(x<0||x%10==0&&x!=0) return false; int reverseNum=0; while(reverseNum<x) {//反转数字 reverseNum=reverseNum*10+x%10; x=x/10; }
//最后的这个return 我觉得很巧妙 直接把数字长度为奇数的情况也考虑到了
return x==reverseNum||x==reverseNum/10; }

猜你喜欢

转载自www.cnblogs.com/CuteyThyme/p/10640143.html
今日推荐