zoukankan      html  css  js  c++  java
  • LeetCode (9): Palindrome Number

     【目】LeetCode(9:  Palindrome Number

    URL:   https://leetcode.com/problems/palindrome-number/

    【描述】

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

    【中文描述】

    确定一个integer是否是回文数,类似于121,  2332, 1000001, 22这样的。做这个不使用额外空间!

    ————————————————————————————————————————————————————————————

    【初始思路】

    这个题我简直想杀人!!中文描述里,我故意直译了题目最后一句话,还专门用红色字体写出了这句话,就是这个要求折磨了我将近一天!!

    Do this without extra space。这句话什么意思?我如果没有理解错,那就是不能使用额外空间!

    什么是额外空间?我可以理解,除了x外,另外申请的都可以算作额外空间。哪怕是一个pointer,都是在栈里占用空间的啊! 这就意味着,你不能把integer转成string,不能获知这个integer的位数,你所有的代码,都只能用一个变量,就是这个x。

    思来想去,想了一整天无果。最后,吃完晚饭,没办法,穷途末路了,心想一个easy题居然被我做成这样!还是回国吧,不要想google、facebook了。结果看了别人的答案,我简直疯掉!明明有用额外空间啊!有一个人还在discuss里问:”我这个题没有用额外空间么?为什么还是AC了?“  看来大家都和我一样的烦恼!

    好吧,如果可以用额外空间,这个题就真是太简单了。不多分析了,直接上代码,case closed!

    【Show me the Code!!!】

     1 public static boolean isPalindrome(int x) {
     2         if(x < 0) {return false;} //负数肯定不是,直接返回
     3         if(x >= 0 && x < 10) {return true;}//0-9肯定是,直接返回
     4 
     5         //正数情况
     6         String str = String.valueOf(x);
     7 
     8         int count = 0;
     9         int i = 0, j = str.length() - 1;
    10         while(count < str.length() / 2) { //回文数,只需要匹配两边的就可以了. 奇数位数时,除去中间匹配两边.
    11             if(str.charAt(i) == str.charAt(j)) {
    12                 count++;
    13                 i++;
    14                 j--;
    15             } else {
    16                 return false; //一旦发现不匹配立马返回false
    17             }
    18         }
    19         return true;
    20     }
    isPalindrome

    【反思】

    这个题让我认识到一个问题,实在想不出来的题还是赶紧看提示看discuss吧,毕竟面试的时候还可以和面试官沟通要tip的。死磕到最后只能是浪费时间!

  • 相关阅读:
    buf.readUInt8()
    buf.readUIntBE()
    buf.readInt32BE()
    buf.readInt16BE()
    buf.readInt8()
    buf.readDoubleBE()
    buf.readFloatBE()
    buf.readIntBE()
    POJ
    【C#】C#托付和事件的实例解说
  • 原文地址:https://www.cnblogs.com/lupx/p/leetcode-9.html
Copyright © 2011-2022 走看看