LeetCode第三题
程序员文章站
2022-03-13 13:01:59
...
题目描述:
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
示例 1:
输入: 121
输出: true
示例 2:
输入: -121
输出: false
解释: 从左向右读, 为 -121 。从右向左读, 为 121- 。因此它不是一个回文数。
示例 3:
输入: 10
输出: false
解释: 从右向左读, 为 01 。因此它不是一个回文数
解法一:
在回文数的判断中,此次主要是采取了将每个数进行翻转倒置,重新生成一个数,如果新生成的数字与原来的数字相等则认为该数为回文数。
注意: 在输入的数字中,如果是负数,因为前面存在’-'号,因此负数肯定为非回文数。所以,在实现的程序中,直接判断该数是否为负数。
以上面的负数为例,将数字翻转也无法使回文数成立。因此,负数无法成为回文数。
具体实现代码如下所示:
package com.neu.stu;
import java.util.Scanner;
public class Solution {
public boolean isPalindrome(int x) {
int ReverseNum = 0;
int num = x;
if (x < 0) {
return false;
} else {
while (x != 0) {
int temp = x % 10;
ReverseNum = ReverseNum * 10 + temp;
x /= 10;
}
if (ReverseNum == num) {
return true;
}
return false;
}
}
public static void main(String[] args) {
int num;
System.out.println("please input a number:");
Scanner sc = new Scanner(System.in);
num = sc.nextInt();
Solution su = new Solution();
System.out.println(su.isPalindrome(num));
}
}
时间复杂度:O(n)
空间复杂度: O(1)
解法二:
将输入的数字转换成字符串格式,利用字符串的翻转直接对比。
具体实现代码如下所示:
package com.neu.stu;
import java.util.Scanner;
public class Solution {
public boolean isPalindrome(int x) {
String numStr = String.valueOf(x); //将X转换成字符串格式
if (numStr.equals(new StringBuilder(numStr).reverse().toString())) {
return true;
}
return false;
}
public static void main(String[] args) {
int num;
System.out.println("please input a number:");
Scanner sc = new Scanner(System.in);
num = sc.nextInt();
Solution su = new Solution();
System.out.println(su.isPalindrome(num));
}
}