题目大意是提供一个32位整数,判断这个数的十进制字符串形式是否是回文。所谓的回文就是字符串的逆序形式与正序形式完全一致。比如123不等于321不符合条件,121等于121符合条件,当然-1不等于1-也是不符合条件的。题目还限制了允许使用的存储空间。
可以简单地利用另外一个32位整数m记录输入整数n的逆序形式,之后比较m是否等于n即可。时间复杂度和空间复杂度均可以认为是常数,故依旧是O(1)。
isPalindrome(n)
if(n < 0)
return false
m = 0, tmp = n
while(tmp >= 10)
m = m * 10 + tmp % 10
tmp = tmp / 10
return m == n / 10 && tmp == n % 10
下面提供实现代码:
package cn.dalt.leetcode;/*** Created by dalt on 2017/6/11.*/ public class PalindromeNumber {public boolean isPalindrome(int x) {if (x < 0) {return false;}int tmp = x;int r = 0;while (tmp >= 10) {r = r * 10 + tmp % 10;tmp /= 10;}return r == x / 10 && tmp == x % 10;} }