java中判断回文数程序 (Java中判断不同类型的方法)
文章编号:348
2024-01-03
回文数是指正序(从左往右)和倒序(从右往左)读都相同的数字。判断一个数字是否为回文数是编程中常见的问题之一。在Java中,我们可以使用不同的方法来判断一个数字是否为回文数。
方法一:将数字转换为字符串
我们可以将数字转换为字符串,然后比较字符串的正序和倒序是否相同。如果相同,就说明这个数字是回文数。
public boolean isPalindrome(int num) { String str = String.valueOf(num); String reverseStr = new StringBuilder(str).reverse().toString(); return str.equals(reverseStr);}
这种方法的时间复杂度为O(n),其中n为数字的位数。
方法二:使用取余和除法逆转数字
我们可以使用取余和除法操作来逆转数字。具体步骤如下:
- 将数字num赋值给另一个变量temp
- 初始化一个变量reverse为0
- 循环取余操作,将temp的个位数加到reverse的末尾,同时将temp除以10
- 重复步骤3,直到temp为0
- 比较num和reverse是否相等,如果相等,则说明num是回文数
public boolean isPalindrome(int num) { if (num < 0 || (num % 10 == 0 && num != 0)) { return false; } int reverse = 0; int temp = num; while (temp != 0) { reverse = reverse * 10 + temp % 10; temp /= 10; } return num == reverse;}
这种方法的时间复杂度为O(logn),其中n为数字的大小。
方法三:只翻转一半的数字
我们可以只翻转数字的一半,然后将翻转后的一半和原数字的另一半进行比较。具体步骤如下:
- 将数字num赋值给另一个变量reverse
- 初始化一个变量half为0
- 循环取余操作,将reverse的个位数加到half的末尾,同时将reverse除以10
- 重复步骤3,直到reverse小于等于half
- 比较num和half是否相等,或者num和half/10(去掉中位数)是否相等,如果相等,则说明num是回文数
public boolean isPalindrome(int num) { if (num < 0 || (num % 10 == 0 && num != 0)) { return false; } int half = 0; int reverse = num; while (reverse > half) { half = half * 10 + reverse % 10; reverse /= 10; } return reverse == half || reverse == half / 10;}
这种方法的时间复杂度为O(logn),其中n为数字的大小。
通过以上三种方法,我们可以在Java中判断一个数字是否为回文数。具体选择哪种方法取决于实际需求和性能要求。
本文地址: https://www.1dh.cc/article/348.html