题目链接:Palindrome Number
这道题目是判断一个整数是不是回文数,并且不能花费多余的空间。
回文数即正着和倒着是一样的~
刚刚做过Reverse Integer反转数问题,那么就判断反转前后的数是否一样不就可以了嘛~
直接在反转数的上稍微修改了下,并且可以说更简单了,因为负数不是回文数(0是回文数),省去了判断符号和取绝对值的步骤。
代码如下:
public class Solution {
public boolean isPalindrome(int x) {
if(x<0)
return false;
long num = x;
String str = Long.toString(num);
String reverse =
new StringBuffer(str).reverse().toString();
num = Long.parseLong(reverse);
System.out.println(num);
if (num > Integer.MAX_VALUE) //这里判断反转后的数值是否越界
return false;
if(num == x)
return true;
else
return false;
}
}
其实在读完题目,要求Do this without extra space,这里我就疑惑了不能花费多余的空间,搜索一番,应该是指空间复杂度为O(1)
空间复杂度(Space Complexity)是对一个算法在运行过程中临时占用存储空间大小的量度。一个算法在计算机存储器上所占用的存储空间,包括存储算法本身所占用的存储空间,算法的输入输出数据所占用的存储空间和算法在运行过程中临时占用的存储空间这三个方面。
关于O(1)的问题, O(1)是说数据规模和临时变量数目无关,并不是说仅仅定义一个临时变量。举例:无论数据规模多大,我都定义100个变量,这就叫做数据规模和临时变量数目无关,就是说空间复杂度是O(1)。