一、题目描述



二、代码实现
2.1 将数字转为字符串然后反转
package com.it.leetcode;
public class Day_0002 {
public static void main(String[] args) {
System.out.println(isPalindrome(121)); //true
System.out.println(isPalindrome(123)); //false
System.out.println(isPalindrome(1221)); //true
}
private static boolean isPalindrome(int num) {
//将int类型的变量转换成String类型
String orgstr = String.valueOf(num);
//将该字符串反转
StringBuilder newstr = new StringBuilder(orgstr);
String newstr1 = newstr.reverse().toString();
if (orgstr.equals(newstr1)) {
return true;
}
return false;
}
}
2.2 数学算法
package com.it.leetcode;
public class Day_0002 {
public static void main(String[] args) {
System.out.println(isPalindrome1(121)); //true
System.out.println(isPalindrome1(123)); //false
System.out.println(isPalindrome1(1221)); //true
System.out.println(isPalindrome1(0)); //true
}
//将一半数字反转,然后与另一半数字做比较
private static boolean isPalindrome1(int num) {
//负数、个位数为0的数肯定不是回文数
//需要注意的是这里要不包含0,否则的话会出bug
if (num < 0 || (num % 10 == 0 && num != 0)) {
return false;
}
//0是回文数
if (num == 0) {
return true;
}
//定义一个记录一半反转数字的变量
int reverseNum = 0;
while (num > reverseNum) {
reverseNum = reverseNum * 10 + num % 10;
num /= 10;
}
return num == reverseNum || num == reverseNum / 10;
}
}
三、运行结果
