What is Palindrome number?
A palindromic number is a number (such as 24842) that remains the same
when its digits are reversed.
Here are few other names:
- numeral palindrome
- numeric palindrome
In this tutorial we will go over steps on how to check if Number and String is Palindrome or not.
If you have any of below questions then you are at right place:
- Java Program to Check Whether a Number is Palindrome
- Definition of Palindromic Numbers
- Java Program to Check Whether Given String is a Palindrome
Steps – Let’s get started.
- Write a program CrunchifyFindPalindromeNumber.java
- We will create 3 methods:
- crunchifyFindPalindromeUsingForLoop()
- crunchifyFindPalindromeUsingWhileLoop()
- crunchifyFindPalindromeForString()
- Print result
CrunchifyFindPalindromeNumber.java
We will use AtomicInteger here in this Java program. It is an int value that may be updated atomically. See the VarHandle specification for descriptions of the properties of atomic accesses.
An AtomicInteger is used in applications such as atomically incremented counters, and cannot be used as a replacement for an Integer. However, this class does extend Number to allow uniform access by tools and utilities that deal with numerically-based classes.
package crunchify.com.java.tutorials; import java.util.concurrent.atomic.AtomicInteger; /** * @author Crunchify.com * In Java How to Check if Number/String is Palindrome or not? */ public class CrunchifyFindPalindromeNumber { public static void main(String[] args) { crunchifyFindPalindromeUsingForLoop(24642); crunchifyFindPalindromeUsingWhileLoop(34567); crunchifyFindPalindromeUsingForLoop(987656789); crunchifyFindPalindromeUsingWhileLoop(555555); crunchifyFindPalindromeUsingForLoop(1); crunchifyFindPalindromeUsingWhileLoop(989); crunchifyPrint(""); crunchifyFindPalindromeForString("abcdefedcba"); crunchifyFindPalindromeForString("abcdefghij"); } // Method 1: Find Palindrome for String private static void crunchifyFindPalindromeForString(String crunchifyString) { // reverse(): AbstractStringBuilder Causes this character sequence to be replaced by the reverse of the sequence. // If there are any surrogate pairs included in the sequence, these are treated as single characters for the reverse operation. // Thus, the order of the high-low surrogates is never reversed. Let n be the character length of this character sequence // (not the length in char values) just prior to execution of the reverse method. Then the character at index k in the new character // sequence is equal to the character at index n-k-1 in the old character sequence. String crunchifyReverse = new StringBuffer(crunchifyString).reverse().toString(); // checks whether the string is palindrome or not if (crunchifyString.equals(crunchifyReverse)) crunchifyPrint(crunchifyString + " --> Yes, it is a palindrome String."); else crunchifyPrint(crunchifyString + " --> No, it is not a palindrome String."); } // Simple Print Utility private static void crunchifyPrint(String crunchifyString) { System.out.println(crunchifyString); } // Method 2: Find Palindrome for Integer using For Loop private static void crunchifyFindPalindromeUsingForLoop(int number) { // AtomicInteger: An int value that may be updated atomically. // See the VarHandle specification for descriptions of the properties of atomic accesses. // An AtomicInteger is used in applications such as atomically incremented counters, and cannot be used as a replacement for an Integer. // However, this class does extend Number to allow uniform access by tools and utilities that deal with numerically-based classes. AtomicInteger reverseNumber = new AtomicInteger(); AtomicInteger crunchifyRemainder = new AtomicInteger(); int crunchifyOriginal; AtomicInteger crunchifyNumber = new AtomicInteger(number); crunchifyOriginal = crunchifyNumber.get(); // reversed integer is stored in variable // updateAndGet Atomically updates (with memory effects as specified by VarHandle.compareAndSet) the current value with the results of // applying the given function, returning the updated value. // The function should be side-effect-free, since it may be re-applied when attempted updates fail due to contention among threads. for (; crunchifyNumber.get() != 0; crunchifyNumber.updateAndGet(v -> v / 10)) { crunchifyRemainder.set(crunchifyNumber.get() % 10); reverseNumber.set(reverseNumber.get() * 10 + crunchifyRemainder.get()); } // Palindrome is a number that remains the same when its digits are reversed. if (crunchifyOriginal == reverseNumber.get()) crunchifyPrint(crunchifyOriginal + " --> Yes, it is a palindrome Number."); else crunchifyPrint(crunchifyOriginal + " --> No, it is not a palindrome Number."); } // Method 3: Find Palindrome for Integer using While Loop private static void crunchifyFindPalindromeUsingWhileLoop(int number) { AtomicInteger reverseNumber = new AtomicInteger(); AtomicInteger crunchifyRemainder = new AtomicInteger(); int crunchifyOriginal; int crunchifyNumber = number; crunchifyOriginal = crunchifyNumber; while (crunchifyNumber != 0) { crunchifyRemainder.set(crunchifyNumber % 10); // set() Sets the value to newValue, with memory effects as specified by VarHandle. // get() Returns the current value, with memory effects as specified by VarHandle.getVolatile. reverseNumber.set(reverseNumber.get() * 10 + crunchifyRemainder.get()); crunchifyNumber /= 10; } // Palindrome is a number that remains the same when its digits are reversed. if (crunchifyOriginal == reverseNumber.get()) crunchifyPrint(crunchifyOriginal + " --> Yes, is a palindrome Number."); else crunchifyPrint(crunchifyOriginal + " --> No, is not a palindrome Number."); } }
Just run above program as Java application and you should result as below.
Eclipse / IntelliJ IDEA console result.
24642 --> Yes, it is a palindrome Number. 34567 --> No, is not a palindrome Number. 987656789 --> Yes, it is a palindrome Number. 555555 --> Yes, is a palindrome Number. 1 --> Yes, it is a palindrome Number. 989 --> Yes, is a palindrome Number. abcdefedcba --> Yes, it is a palindrome String. abcdefghij --> No, it is not a palindrome String. Process finished with exit code 0
Let me know if you face any issue running above program.