反向时不变的数字称为回文数。换句话说,反转数字时不影响该数字称为回文数。例如,回文数为121、343、555、606、999、1001、1331。在本节中,我们将创建一个Java程序来检查数字是否为回文数。
查找回文数的算法
- 获取编号,将要检查回文。
- 通过将数字存储在某个临时变量中来创建该数字的副本。
- 现在,反转数字。
- 检查复印件的倒数是否相等。
- 如果相等,那么我们有回文数。
- 否则,该数字不是回文。
以下Java程序演示了如何使用while循环来检查给定数字是否是回文数。
迭代法
文件名: PalindromeNumberExample 。爪哇
public class PalindromeNumberExample
{
public static void main(String[] args)
{
int no = 535; // To be checked for palindorme
int tempVar = no; // Creating the copy of ‘no’
int sum = 0;
while(no > 0)
{
// reversing the number
sum = sum * 10;
sum = sum + (no % 10);
no = no / 10;
}
if(tempVar == sum)
System.out.print("The number " + tempVar +" is a palindrome number.");
else
System.out.print("The number " + tempVar +" is not a palindrome number.");
}
}
输出:
The number 535 is a palindrome number.
说明:我们使用Java while循环来反转数字。while循环的迭代次数取决于给定数字中存在的位数。在我们的例子中是3。让我们看看程序的工作原理。
第一次迭代: sum = sum * 10。但是,我们将sum的值初始化为0;因此,我们得出sum = 0 * 10 = 0。同样,我们通过将给定数字相除得到的余数相加来更新总和的值(535)。因此,我们得出sum = 0 +(535%10)。总和= 0 + 5 = 5。最后,我们将给定数字除以10,然后将商分配给该数字。否= 535/10 = 53。无变量的更新值为53,将在下一次迭代中使用。
第二次迭代:在第二次迭代中, sum的值为5。因此,总和= 5 * 10 = 50。同样,我们将余数相加。这次的数字是53。因此,我们得出sum = 50 +(53%10)。总和变成50 + 3 = 53。最后,给定数字再次缩小一位,变为5。no = 53/10 = 5。
第三次迭代:过程相似。的总和为53。因此,总和= 53 * 10 = 530。加完余数后,我们得到535。此外,数字变为no = 5/10 = 0。因为每次我们都检查while循环条件。当条件no> 0返回false时,循环终止。
递归方法
我们还可以使用递归方法检查回文数。
文件名: PalindromeNumberExample1 。爪哇
public class PalindromeNumberExample1
{
static boolean isPalindrome(int no, int tempVar, int sum)
{
if(no < 0) return false;
if(no == 0) return sum == tempVar;
return isPalindrome(no/10, tempVar, sum * 10 + (no%10));
}
public static void main(String[] args)
{
int a[] = {4, 434, 909, 100, -66, 123, 797};
for(int i = 0; i < a.length; i++)
if(isPalindrome(a[i], a[i], 0))
System.out.println("The number " + a[i] +" is a palindrome number.");
else
System.out.println("The number " + a[i] +" is not a palindrome number.");
}
}
输出:
The number 4 is a palindrome number.
The number 434 is a palindrome number.
The number 909 is a palindrome number.
The number 100 is not a palindrome number.
The number -66 is not a palindrome number.
The number 123 is not a palindrome number.
The number 797 is a palindrome number.
说明:同样在递归方法中,我们创建了该数字的副本,然后将其与我们反转的数字进行比较。注意,根据数学定义,负数永远不能是回文数。
import java.util.*;
class PalindromeExample2
{
public static void main(String args[])
{
String original, reverse = ""; // Objects of String class
Scanner in = new Scanner(System.in);
System.out.println("Enter a string/number to check if it is a palindrome");
original = in.nextLine();
int length = original.length();
for ( int i = length - 1; i >= 0; i-- )
reverse = reverse + original.charAt(i);
if (original.equals(reverse))
System.out.println("Entered string/number is a palindrome.");
else
System.out.println("Entered string/number isn't a palindrome.");
}
}