当前位置 博文首页 > Palindrome Number_让代码改变世界:LeetCode 9

    Palindrome Number_让代码改变世界:LeetCode 9

    作者:[db:作者] 时间:2021-07-10 18:58

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

    这是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位。至于具体怎么分离大家都明白,不明白的可以去程序里总结一下。

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

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

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

    cs