题目

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

click to show spoilers.

Some hints:

Could negative integers be palindromes? (ie, -1)

If you are thinking of converting the integer to string, note the restriction of using extra space.

You could also try reversing an integer. However, if you have solved
the problem "Reverse Integer", you know that the reversed integer might
overflow. How would you handle such case?

There is a more generic way of solving this problem.

题解

最开始是用Reverse Integer的方法做的,通过了OJ,不过那个并没有考虑越界溢出问题。遇见这种处理Number和Integer的问题,首要考虑的就是会不会溢出越界。然后再考虑下负数,0。还有就是要心里熟悉\的结果和%的结果。感觉这种题就是考察你对数字敏感不敏感(反正我是很不敏感)

有缺陷的代码如下:

 1     public boolean isPalindrome(int x) {

 2         if(x<0)

 3            return false;

 4         

 5         int count = 0;

 6         int testx = x;

 7         while(testx!=0){

 8            int r = testx%10;

 9            testx = (testx-r)/10;

            count++;

         }

         

         int newx = x;

         int result = 0;

         while(newx!=0){

            int r = newx%10;

            int carry = 1;

            int times = count;

            while(times>1){

                carry = carry*10;

                times--;

            }

            result = result+r*carry;

            newx= (newx-r)/10;

            count--;

         }

         

         return result==x;

         

     }

另外一种方法可以避免造成溢出,就是直接安装PalidromeString的方法,就直接判断第一个和最后一个,循环往复。这样就不会对数字进行修改,而只是判断而已。

代码如下:

 1     public boolean isPalindrome(int x) {
 2         //negative numbers are not palindrome
 3         if (x < 0)
 4             return false;
 5  
 6         // initialize how many zeros
 7         int div = 1;
 8         while (x / div >= 10) {
 9             div *= 10;
         }
  
         while (x != 0) {
             int left = x / div;
             int right = x % 10;
  
             if (left != right)
                 return false;
  
             x = (x % div) / 10;
             div /= 100;
         }
  
         return true;
     }

Reference:

http://www.programcreek.com/2013/02/leetcode-palindrome-number-java/

Palindrome Number leetcode java的更多相关文章

  1. Palindrome Number - LeetCode

    目录 题目链接 注意点 解法 小结 题目链接 Palindrome Number - LeetCode 注意点 负数肯定是要return false的 数字的位数要分奇数和偶数两种情况 解法 解法一: ...

  2. leetcode 第九题 Palindrome Number(java)

    Palindrome Number time=434ms 负数不是回文数 public class Solution { public boolean isPalindrome(int x) { in ...

  3. Letter Combinations of a Phone Number leetcode java

    题目: Given a digit string, return all possible letter combinations that the number could represent. A ...

  4. Palindrome Number ---- LeetCode 009

    Determine whether an integer is a palindrome. Do this without extra space. Some hints: Could negativ ...

  5. Ugly Number leetcode java

    问题描述: Write a program to check whether a given number is an ugly number. Ugly numbers are positive n ...

  6. Single Number leetcode java

    问题描述: Given an array of integers, every element appears twice except for one. Find that single one. ...

  7. Palindrome Partitioning leetcode java

    题目: Given a string s, partition s such that every substring of the partition is a palindrome. Return ...

  8. Valid Number leetcode java

    题目: Validate if a given string is numeric. Some examples: "0" => true " 0.1 " ...

  9. 《LeetBook》leetcode题解(9):Palindrome Number[E]——回文数字

    我现在在做一个叫<leetbook>的开源书项目,把解题思路都同步更新到github上了,需要的同学可以去看看 地址:https://github.com/hk029/leetcode 这 ...

随机推荐

  1. 利用Microsoft Sql Server Management studio 创建数据库的示例

    利用Microsoft Sql Server Management studio 创建数据库的示例方法如下:   一.打开安装好的Microsoft Sql Server Management stu ...

  2. java string 替换img标签 正则表达式 任意多个字符

    正则表达式 任意多个字符 (.*)  正则表达式中,“.”(点符号)匹配的是除了换行符“\n”以外的所有字符 要匹配包括 '\n' 在内的任何字符,([\s\S]*) 也可以用 “([\d\D]*)” ...

  3. 我的Python之旅第五天---迭代器和生成器

    h3,#nv_portal .vw .d .h3 {display: block; font-weight: 500; background-image: linear-gradient(to rig ...

  4. 如何处理C++构造函数中的错误——兼谈不同语言的错误处理

    用C++写代码的时候总是避免不了处理错误,一般来说有两种方式,通过函数的返回值或者抛出异常.C语言的错误处理一律是通过函数的返回值来判断的,一般是返回0.NULL或者-1表示错误,或者直接返回错误代码 ...

  5. Codeforces Round #272 (Div. 2) D. Dreamoon and Sets 构造

    D. Dreamoon and Sets 题目连接: http://www.codeforces.com/contest/476/problem/D Description Dreamoon like ...

  6. 新手学cocos2dx,centos7下的安装过程

    背景 打算学写游戏,新手向,当然从cocos2d-x开始. 看了cocos的文档,安装是针对ubuntu的,这里记录下centos7上安装.编译.运行测试的过程. 如果你已经有ubuntu,不推荐看此 ...

  7. C# .Net 多进程同步 通信 共享内存 内存映射文件 Memory Mapped

    节点通信存在两种模型:共享内存(Shared memory)和消息传递(Messages passing). 内存映射文件对于托管世界的开发人员来说似乎很陌生,但它确实已经是很远古的技术了,而且在操作 ...

  8. Revit API封装一个通用函数“过名称找元素”

    感觉这个函数不错.通过这种方式寻找元素经常需要用到. )         {  ];         }         // cannot find it.         return null; ...

  9. Weblogic12C 集群实现session同步

    测试地址:http://vanatita.com/ 刷新可以看见效果 读取 Session ID=gnFx9OTVFkfNOWCXFqQqeZi07m9BdHhvnqCv0Cq1t3n1EA2ljUG ...

  10. 用SDWebImage加载FLAnimatedImage

    用SDWebImage加载FLAnimatedImage 效果 源码 https://github.com/YouXianMing/Animations // // GifPictureControl ...