LeetCode 9_Palindrome Number

来源:互联网 发布:红旗linux系统 编辑:程序博客网 时间:2024/06/05 05:04

今天心情不好,再来写一道吧,只有在编程时才会暂时忘掉不愉快的事,不过希望大家不要被我的情绪干扰。在这里我也祝每个有意或无意看到本文的读者生活幸福,可能文章写得一般,但祝福是真挚的,毕竟每个为自己理想努力的人都是英雄,都有获得幸福的权利。。。肉麻的话就不多说了,进入正题吧。

这是leetcode第9题,难度不大,我们简单说一下。原题如下

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

不要怀疑,我没有粘漏。这个题目就是这样小巧玲珑,就是让你判断一个整数是否是回文数,回文数跟我们前面一道回文字符串是一个概念,就是看倒过来读是不是和原先的数字一样。也可以说看数字是否对称,这一点就不多解释了,不懂的可以百度一下。

要说这题的难度应该在于第二句话,我可以用我高超的英语水平给大家翻译一下:不要使用额外的空间。我认为这句话可以这么理解,即不要在程序中定义变量。可是看了很多答案,(当然是做完通过之后,强烈建议大家不要先看答案,除非自己确实没招了)他们好像对这句话”选择性屏蔽了“,很多人都有了额外的变量,这咱就不提了,毕竟不是每个人都像我这么审题仔细的。。。。等等,我没理解错吧(得瑟之前一定要再三确认,不要被别人反秀了),,,,Do this without extra space,,,不要使用额外的空间,,,不要,,使用,,,额外的,,,空间,,,确定无误!

开个玩笑,缓解一下心中的苦闷,大家不要介意,我们直接说代码吧。

class Solution {public:    bool isPalindrome(int x) {if(x<0)return false;if(x/10==0) return true;//一位数else if(x/100==0)//两位数{return x/10==x%10;}else if(x/1000==0)//三位数{return x/100==x%10;}else if(x/10000==0)//四位数{return (x%10*10+x%100/10)==x/100;}else if(x/100000==0)//五位数{return (x%10*10+x%100/10)==x/1000;}else if(x/1000000==0)//六位数{return x%10*100+x%100/10*10+x%1000/100==x/1000;}else if(x/10000000==0)//七位数{return x%10*100+x%100/10*10+x%1000/100==x/10000;}else if(x/100000000==0)//八位数{return x%10*1000+x%100/10*100+x%1000/100*10+x%10000/1000==x/10000;}else if(x/1000000000==0)//九位数{return x%10*1000+x%100/10*100+x%1000/100*10+x%10000/1000==x/100000;}else if(x/10000000000==0)//十位数{return x%10*10000+x%100/10*1000+x%1000/100*100+x%10000/1000*10+x%100000/10000==x/100000;}else return 0;    }};
看到这里,我知道有些人已经露出了鄙夷的眼神,其实我想说的是,当初要我发这个代码我是拒绝的。

确实这个程序没有什么可以称得上亮点的东西,就算法来说,是用了最low的穷举法。不过话说回来,在有空间条件限制的情况下写出这种代码也并不算是不能原谅的吧。再说我可是正伤心着呐,做人要有同情心嘛,你们说是不是这个道理。

好了,还是说点儿有用的而不,这里面其实就是用了数字分离的一个规律,所谓数字分离就是在一串很长的数字中分离出想要的那一位,比如说在一个8位数里分离出又数第3位。至于具体怎么分离大家都明白,不明白的可以去程序里总结一下。

至于大神的代码,我本来是想给大家找的额,但找了两个都是用了额外的空间。我想要是把这个条件去了那程序就更没有难度了吧,大家也就很容易解决了,然后今天心情也不好,总之就是就不找大神了,以后有机会找到了再补上吧。
还有一点是回文数没有负数,这一点可能有人没注意到,还是那句话,对所有输入要考虑全面,这一点要随时提醒自己。(本文完)

最后呢,写给自己几句话吧,虽然现在的日子比较难,虽然有些人比你幸福,虽然你很努力了却没有得到想要的,但请不要灰心,阴郁的日子总会过去,相信一切都好慢慢好起来的。

祝每一个人都能找到属于自己的幸福。

1 0