Java程序来反转一个数字并检查它是否是回文
如果给定数字的倒数与给定数的倒数相同,则给定数本质上可以说是回文。数字的长度为 log 10 (n),即对于 BigIntegers 使用字符串操作,如创建反向和检查回文将花费 log 10 (n) 时间。
A. Java int 限制下的数量
例子 :
Input : n = 46355364
Output: Reverse of n = 46355364
Palindrome = Yes
Input : n = 87476572465
Output: Reverse of n = 56427567478
Palindrome = No
我们可以通过多种方式反转一个数字,下面是相同的迭代实现。
迭代算法:
Input: number
1. Initialize reversed_number = 0
2. Loop while num
ber > 0
a. Multiply reversed_number by 10 and add number % 10 to reversed_number
reversed_number = reversed_number*10 + number %10;
b. Divide number by 10
3. Return reversed_number
例子:
number = 1234
reversed_number= 0
reversed_number = reversed_number *10 + number%10 = 4
number = number/10 = 123
reversed_number = reversed_number*10 + number%10 = 20 + 6 = 43
number = number/10 = 12
reversed_number = reversed_number*10 + number%10 = 260 + 5 = 432
number = number/10 = 1
reversed_number = reversed_number*10 + number%10 = 265 + 4 = 4321
number = number/10 = 0
下面是上述方法的实现。
Java
// Java program to reverse a number
// and find if it is a palindrome or not
class GFG {
// Iterative function to
// reverse the digits of number
static int reversNumber(int n)
{
int reversed_n = 0;
while (n > 0) {
reversed_n = reversed_n * 10 + n % 10;
n = n / 10;
}
return reversed_n;
}
// Main function
public static void main(String[] args)
{
int n = 123464321;
int reverseN = reversNumber(n);
System.out.println("Reverse of n = " + reverseN);
// Checking if n is same
// as reverse of n
if (n == reverseN)
System.out.println("Palindrome = Yes");
else
System.out.println("Palindrome = No");
}
}
Java
// Java program to reverse a number
// and find if it is a palindrome or not
import java.io.*;
import java.math.BigInteger;
class GFG {
// Reverse Big Integer
public static BigInteger reverse(BigInteger n)
{
String s = n.toString();
StringBuilder sb = new StringBuilder(s);
return new BigInteger(sb.reverse().toString());
}
// Main Function
public static void main(String[] args)
{
BigInteger n
= new BigInteger("12345678999999999987654321");
BigInteger reverseN = reverse(n);
System.out.println("Reverse of n = " + reverseN);
// Checking if n is same
// as reverse of n
if (n.compareTo(reverseN) == 0)
System.out.println("Palindrome = Yes");
else
System.out.println("Palindrome = No");
}
}
输出
Reverse of n = 123464321
Palindrome = Yes
时间复杂度: O(log 10 (n)) 其中 n 是输入数字。
B. 大整数:使用 BigInteger 类
例子
Input : n = 12345678999999999987654321
Output: Reverse of n = 12345678999999999987654321
Palindrome = Yes
方法
- 在 BigInteger 变量中输入。
- 使用 reverse 方法反转给定的 BigInteger。
- 使用 compareTo() 方法比较两个 BigInteger。
下面是上述方法的实现。
Java
// Java program to reverse a number
// and find if it is a palindrome or not
import java.io.*;
import java.math.BigInteger;
class GFG {
// Reverse Big Integer
public static BigInteger reverse(BigInteger n)
{
String s = n.toString();
StringBuilder sb = new StringBuilder(s);
return new BigInteger(sb.reverse().toString());
}
// Main Function
public static void main(String[] args)
{
BigInteger n
= new BigInteger("12345678999999999987654321");
BigInteger reverseN = reverse(n);
System.out.println("Reverse of n = " + reverseN);
// Checking if n is same
// as reverse of n
if (n.compareTo(reverseN) == 0)
System.out.println("Palindrome = Yes");
else
System.out.println("Palindrome = No");
}
}
输出
Reverse of n = 12345678999999999987654321
Palindrome = Yes
时间复杂度: O(log 10 (n)) 其中 n 是输入数字。