欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

LeetCode第三题

程序员文章站 2022-03-13 13:01:59
...

​题目描述:
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。

示例 1:
输入: 121
输出: true

示例 2:
输入: -121
输出: false
解释: 从左向右读, 为 -121 。从右向左读, 为 121- 。因此它不是一个回文数。

示例 3:
输入: 10
输出: false
解释: 从右向左读, 为 01 。因此它不是一个回文数

解法一:
在回文数的判断中,此次主要是采取了将每个数进行翻转倒置,重新生成一个数,如果新生成的数字与原来的数字相等则认为该数为回文数。
LeetCode第三题
注意: 在输入的数字中,如果是负数,因为前面存在’-'号,因此负数肯定为非回文数。所以,在实现的程序中,直接判断该数是否为负数。
LeetCode第三题
以上面的负数为例,将数字翻转也无法使回文数成立。因此,负数无法成为回文数。
具体实现代码如下所示:

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));
  }
}