当前位置: 首页 > article >正文

Java 判断回文数

### Java 判断回文数

#### 一、问题描述

回文数是指正着读和反着读都相同的数字。例如,121 和 12321 是回文数,而 123 和 1234 不是。该问题要求编写一个 Java 程序,判断给定的整数是否为回文数。

#### 二、解决方案

1. **字符串法**:将整数转换为字符串,反转字符串并与原字符串比较。
2. **数学法**:通过对数字进行数学操作来反转数字,然后与原数字比较。

#### 三、示例代码

以下是两种方法的实现代码。

##### 方法 1:字符串法

```java
public class PalindromeNumber {
    public static boolean isPalindrome(int x) {
        // 负数和以0结尾的数字不是回文数
        if (x < 0 || (x % 10 == 0 && x != 0)) {
            return false;
        }
        // 转换为字符串并反转
        String str = Integer.toString(x);
        String reversedStr = new StringBuilder(str).reverse().toString();
        return str.equals(reversedStr);
    }

    public static void main(String[] args) {
        int num = 121;
        System.out.println(num + " 是回文数吗? " + isPalindrome(num));
    }
}
```

##### 方法 2:数学法

```java
public class PalindromeNumber {
    public static boolean isPalindrome(int x) {
        // 负数和以0结尾的数字不是回文数
        if (x < 0 || (x % 10 == 0 && x != 0)) {
            return false;
        }

        int reversed = 0;
        int original = x;

        // 反转数字的一半
        while (x > 0) {
            reversed = reversed * 10 + x % 10;
            x /= 10;
        }

        // 只需比较原始数与反转数
        return original == reversed;
    }

    public static void main(String[] args) {
        int num = 121;
        System.out.println(num + " 是回文数吗? " + isPalindrome(num));
    }
}
```

#### 四、复杂度分析

- **时间复杂度**:
  - 字符串法:O(n),其中 n 是数字的位数。
  - 数学法:O(n),同样是数字的位数。
  
- **空间复杂度**:
  - 字符串法:O(n),需要额外的空间存储反转字符串。
  - 数学法:O(1),只使用常量级的额外空间。

#### 五、总结

以上代码提供了判断回文数的两种方法。字符串法简单直观,适合快速实现;数学法则避免了字符串转换,适合在内存受限的环境下使用。可以根据具体需求选择适合的方法。


http://www.kler.cn/a/374662.html

相关文章:

  • 学Linux的第五天
  • 2024年1024程序人生总结
  • 合并两个已排序的链表
  • 创意设计的起点:十大网页设计模板网站
  • 强大的文本编辑器Notepad++8.4.6 最新版
  • 【Linux:TCP通信流程】
  • 乐鑫ESP32-S3无线AI语音方案,教育机器人交互应用,启明云端乐鑫代理商
  • Linux补基础之:网络配置
  • 笔试题 求空格分割的英文句子中,最大单词长度。
  • 大语言模型推理代码构建(基于llama3模型)
  • 2001-2023年A股上市公司数字化转型数据(MDA报告词频统计)(三种方法)
  • (51)MATLAB迫零均衡器系统建模与性能仿真
  • python使用pymysql
  • 关于我、重生到500年前凭借C语言改变世界科技vlog.13——深入理解指针(3)
  • Glide 简易教程
  • 【Rust标准库中的convert(AsRef,From,Into,TryFrom,TryInto)】
  • PyQt5信号与槽一
  • 【抽代复习笔记】34-群(二十八):不变子群的几道例题
  • .net core中间件Polly
  • 【WPF】如何获取屏幕比例
  • BFH的原理及用法
  • 【VS中Git同步提交 报错:访问.vs/FileContentIndex/xxx.vsidx权限不允许】
  • DAO模式及单例模式
  • 查询引擎的演变之旅 | OceanBase原理解读
  • 2024 Rust现代实用教程 Borrowing借用 Lifetime生命周期
  • python将mongodb中的数据写入到postgresql中