java现实回文数

判断是否为回文数
问题描述
给定一个整数,编写一个函数来判断它是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
示例代码
public class PalindromeNumber {
public static void main(String[] args) {
System.out.println("123454321 是否为回文数=" + isPalindromeByInt(123454321));
System.out.println("12345432 是否为回文数=" + isPalindromeByInt(12345432));
System.out.println("12324 是否为回文数=" + isPalindromeByInt(12324));
System.out.println("12 是否为回文数=" + isPalindromeByInt(12));
System.out.println("1 是否为回文数=" + isPalindromeByInt(1));
System.out.println("198765432 是否为回文数=" + isPalindromeByInt(198765432));
System.out.println("----------------------------");
System.out.println("1 是否为回文数=" + isPalindromeByString(1));
System.out.println("0 是否为回文数=" + isPalindromeByString(0));
System.out.println("11000 是否为回文数=" + isPalindromeByString(11000));
System.out.println("12332 是否为回文数=" + isPalindromeByString(12332));
System.out.println("123454321 是否为回文数=" + isPalindromeByString(123454321));
System.out.println("198765432 是否为回文数=" + isPalindromeByString(198765432));
}
public static boolean isPalindromeByString(int num) {
if (num < 0) {
return false;
}
String str = String.valueOf(num);
char[] chars = str.toCharArray();
int len = chars.length;
for (int i = 0; i < len; i++) {
if (chars[i] != chars[len - i - 1]) {
return false;
}
}
return true;
}
public static boolean isPalindromeByInt(int num) {
if (num < 0 || (num % 10 == 0 && num != 0)) {
return false;
}
int revertedNumber = 0;
while (num > revertedNumber) {
revertedNumber = revertedNumber * 10 + num % 10;
num /= 10;
}
return num == revertedNumber || num == revertedNumber / 10;
}
}
复杂度分析
- 时间复杂度:O(log10(n)),每次迭代都会将输入除以10。
- 空间复杂度:O(1)。
### 运行结果