码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode (9): Palindrome Number

时间:2015-09-15 07:07:02      阅读:189      评论:0      收藏:0      [点我收藏+]

标签:

 【目】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的。死磕到最后只能是浪费时间!

 

LeetCode (9): Palindrome Number

标签:

原文地址:http://www.cnblogs.com/lupx/p/leetcode-9.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!