给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。
回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
class Solution {
public boolean isPalindrome(int x) {
//将整数变为字符串
String s=String.valueOf(x);
//将字符串反转
char[] chars=s.toCharArray();
char[] chars1=chars;
//冒泡法排序,待改进
for(int i=0;i<chars.length;i++){
char temp=chars[i];
chars[i]=chars[chars.length-1-i];
chars[chars.length-1-i]=temp;
}
if (chars.equals(chars1)) {
return true;
}
return false;
}
}
/*
class Solution {
public boolean isPalindrome(int x) {
String str1 = String.valueOf(x);
StringBuffer buffer = new StringBuffer();
buffer.append(str1);
return str1.equals(buffer.reverse().toString());
}
}
*/
//5ms解法:
class Solution {
public boolean isPalindrome(int x) {
if (x < 0) return false;
String s = String.valueOf(x);
for (int i = 0; i < s.length()/2; i++) {
if (s.charAt(i) != s.charAt(s.length() - i - 1)) {
return false;
}
}
return true;
}
}
//4ms解法:
class Solution {
public boolean isPalindrome(int x) {
//翻转数字
//对比两端的数字是否相等
//特殊情况,如果数小于零, 或时个位为零的非零数,则直接返回false
//数字的位数时偶数个 , 则直接返回,当是奇数个,则要将 除以10
if (x < 0 || x % 10 == 0 && x != 0 ) {
return false;
}
//定义一个新数,用来不断的存放从最左边取出来的数,与此同时,x也在不断的减小
int newnum = 0;
//重复的取数,循环,不知道循环的次数 while
//循环退出条件是 x 小于等于新数的时候,此时已经过了整数的一半
while (x > newnum) {
newnum = newnum * 10 + x % 10;
x /= 10;
}
//返回的是布尔类型的,分 偶数个和奇数个
return x == newnum || x == newnum / 10;
}
}