How to check if a string is a palindrome in Java
In this shot, we will discuss how to check whether a string is a palindrome or not in Java. A palindrome is a string that reads exactly the same, whether it is read from left to right or right to left.
Examples
“madam” is a palindromic string because it reads the same forwards and backward. Other palindromic strings are “anna,” “civic,” “level,” “mom,” “noon,” and “racecar.”
However, if we take a different example like “programmer,” it reads differently if we read it forward and backward. Therefore, “programmer” is not a palindrome.
Solution 1
We can use the isPalindrome() function to check if a string is a palindrome. We pass our input string as an argument and the function will return true if the string is a palindrome and false otherwise.
Steps
- Take a string as input.
- Compare the first and the last character of the string. If they are equal, then compare the second and the second last character of the string, and so on, until we get to the middle of the string.
- If the characters do not match at any iteration, then the string is not a palindrome.
Code
Let’s look at the code below to better understand.
import java.util.Scanner;class palindrome {public static void main(String[] args) {Scanner scanner=new Scanner(System.in);System.out.println("Enter a string as an input to check whether it is palindrome or not");String input= scanner.nextLine();//checking whether palindrome or notif(isPalindrome(input)){System.out.println(input+" is a palindrome string");}else{System.out.println(input+" is not a palindrome string");}}public static boolean isPalindrome(String str) {int left = 0, right = str.length() - 1;while(left < right){if(str.charAt(left) != str.charAt(right)){return false;}left++;right--;}return true;}}
Enter the input below
Explanation
Enter a string in the input section to generate an output.
-
In line 1 we import the
java.util.Scannerclass to read input from the user. -
In line 7 inside the
mainfunction, we create aScannerobject to take the input string from the user and store that input in aStringinput variable. -
In line 9 we call the
isPalindrome()function, which returnstrueif the input is actually a palindrome. -
In lines 19 to 31 we define the
isPalindrome()function. In this function, we initiate two indexes,leftandright, and give the values0andstr.length()-1, repectively. -
Then, we run a
whileloop until the left index is less than the right index, and compare the character at the left index and the character at the right. -
If the characters are not equal at any point, we return
false; otherwise, we returntrue.
Solution 2
We can also check of the string is a palindrome, using StringBuilder reverse() method.
class palindrome {public static boolean isPalindrome(String str) {StringBuilder reversed = new StringBuilder(str).reverse();return str.equals(reversed.toString());}public static void main(String[] args) {String value = "racecar";if (isPalindrome(value)) {System.out.println(value + " is a palindrome string.");} else {System.out.println(value + " is not a palindrome string.");}}}
Explanation
Line 3: We create a
StringBuilderobject with the input string and reverse it.Line 4: Here, we check if the original string is equal to the reversed string.
Line 9-13: Here, we check if the test string is a palindrome or not and print the result.