Java实现判断回文数的代码示例
56 浏览量
更新于2024-08-03
收藏 1KB MD 举报
"Java回文数的实现及代码解析"
在计算机编程中,回文数是一个有趣的概念,它指的是无论从左向右还是从右向左读,数字序列都保持不变。例如,数字121、12321和123321都是回文数。本篇文章将详细介绍如何在Java中判断一个整数是否为回文数,并提供相关的代码示例。
在Java中,我们可以编写一个名为`PalindromeNumber`的类,其中包含一个`isPalindrome`的方法来检查输入的整数是否为回文。以下是对该方法的详细解释:
```java
public class PalindromeNumber {
public static boolean isPalindrome(int num) {
// 如果数字是负数,直接返回false,因为负数不可能是回文数
if (num < 0) {
return false;
}
// 初始化反转后的数字为0
int reversed = 0;
// 保存原始数字的副本,避免在循环中修改原始值
int original = num;
// 当数字不等于0时,继续循环
while (num != 0) {
// 取出数字的最后一位(个位数)
int digit = num % 10;
// 将取出的个位数添加到反转数字的左侧
reversed = reversed * 10 + digit;
// 移除数字的个位数,以便下一次循环
num /= 10;
}
// 比较原始数字和反转后的数字,如果相等则为回文数
return original == reversed;
}
public static void main(String[] args) {
// 测试回文数和非回文数
int num1 = 12321;
int num2 = 12345;
System.out.println(num1 + " is a palindrome: " + isPalindrome(num1));
System.out.println(num2 + " is a palindrome: " + isPalindrome(num2));
}
}
```
在上述代码中,`isPalindrome`方法首先检查输入的数字`num`是否为负数,如果是,则直接返回`false`。接下来,我们创建一个变量`reversed`用来存储反转后的数字,并初始化为0。同时,我们保留`original`变量来保存输入的原始数字,以便于之后的比较。
在循环中,我们用`num % 10`获取`num`的个位数,然后将其加到`reversed`的左侧(通过`reversed * 10 + digit`实现)。接着,我们将`num`除以10,移除其个位数,进入下一次循环。这个过程会一直持续到`num`变为0。
最后,我们比较`original`和`reversed`,如果两者相等,说明`num`是一个回文数,返回`true`;否则,返回`false`。
在`main`方法中,我们调用`isPalindrome`方法测试了两个数字:12321(回文数)和12345(非回文数),并打印了结果。程序的输出为:
```
12321 is a palindrome: true
12345 is a palindrome: false
```
这就是Java中判断回文数的基本方法。这个算法的时间复杂度为O(logN),因为它只遍历了输入数字的每一位。空间复杂度为O(1),因为我们只使用了常数级别的额外空间。
2023-06-15 上传
2008-11-27 上传
2024-06-09 上传
2020-04-05 上传
2020-03-24 上传
2021-01-28 上传
Java毕设王
- 粉丝: 9149
- 资源: 1100
最新资源
- gawiga-nextjs
- OOP_assignment
- compose-countdown-timer
- urban-dictionary:一个Node.js模块,可从urbandictionary.com访问术语和定义
- Payroll-6-12
- TeambitionNET
- 行业分类-设备装置-可移动升降平台.zip
- 易语言创建Access数据库-易语言
- starter-research-group
- leetcode-javascript
- hardhat-next-subgraph-mono:具有安全帽,Next和theGraph的Monorepo模板
- Catalog-开源
- du-an-1
- 行业分类-设备装置-可相互连接的纸质板材组件.zip
- SwiftySequencer:AESequencer 的快速实现
- my-profile