判断回文数,题目要求是不要产生的多余的空间。因为我自己的基础不是很牢靠,不太清楚什么叫不产生多余的空间,我正常的生成变量,所有判断尽量在循环中完成最后提交通过了。代码如下
public class Solution {
public boolean result = true;
public String first;
public String end;
public boolean isPalindrome(int x) {
if(x<0)
{
result = false;
}
else
{
String str = String.valueOf(x); //为了方便提取首位和末尾,将输入的数字转换成了字符串
int i = str.length();
while(i>2)
{
first = str.substring(0, 1);
end = str.substring(i-1, i);
if(first.equals(end))
{
str = str.substring(1, i-1);
i= str.length();
}
else
{
result = false;
break;
}
}
if(i==2)
{
if(!str.subSequence(0,1).equals(str.subSequence(1,2)))
result = false;
}
}
return result;
}
}
public class Solution {
public boolean isPalindrome(int x) {
//negative numbers are not palindrome
if (x < 0)
return false;
// initialize how many zeros
int div = 1;
while (x / div >= 10) { //计算输入数字的位数
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;
}
}
这个代码的思路比较好。比较讨巧,但是多了循环次数,在提交运行的时候运行时间比我自己写的长了将近一倍。