给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。
回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
例如,121 是回文,而 -121、123、10 不是。
方法一:构造反转后的数字进行对比(空间时间上最优)
class Solution {
public boolean isPalindrome(int x) {
if(x<0){
return false;
}else{
int cur = 0;
int num = x;
while(num>0){
cur = cur*10+num%10; //将num最后一位数变为cur最开始的数
num = num/10; //删除num最后一位数
}
return x == cur;
}
}
}
方法二:前后逐一字符比较
class Solution {
public boolean isPalindrome(int x) {
if(x<0){ //负数不是,直接返回
return false;
}
String xs = String.valueOf(x);
int xl = xs.length();
for(int i=0;i<xl/2;i++){
char y = xs.charAt(i);
char w = xs.charAt(xl-1-i);
if(y!=w){
return false;
}
}
return true;
}
}
方法三:通过字符串比较(时间空间上最差)
class Solution {
public boolean isPalindrome(int x) {
String s = String.valueOf(x);
//StringBuilder有字符串反转的方法,String没有
StringBuilder str = new StringBuilder(s);
StringBuilder reverse = str.reverse();
//StringBuilder不能直接跟String进行比较
String s1 = String.valueOf(reverse);
if(s1.equals(s)){
return true;
}
return false;
}
}