Skip to content

Instantly share code, notes, and snippets.

@drewdev02
Created March 5, 2023 19:41
Show Gist options
  • Save drewdev02/971bfb843967b2f8821fbef4f8ac7c90 to your computer and use it in GitHub Desktop.
Save drewdev02/971bfb843967b2f8821fbef4f8ac7c90 to your computer and use it in GitHub Desktop.
package com.thealgorithms.strings;
/**
* Wikipedia: https://en.wikipedia.org/wiki/Palindrome
*/
class Palindrome {
/**
* Check if a string is palindrome string or not using String Builder
*
* @param s a string to check
* @return {@code true} if given string is palindrome, otherwise
* {@code false}
*/
public static boolean isPalindrome(String s) {
return (
(s == null || s.length() <= 1) ||
s.equals(new StringBuilder(s).reverse().toString())
);
}
/**
* Check if a string is palindrome string or not using recursion
*
* @param s a string to check
* @return {@code true} if given string is palindrome, otherwise
* {@code false}
*/
public static boolean isPalindromeRecursion(String s) {
if (s == null || s.length() <= 1) {
return true;
}
if (s.charAt(0) != s.charAt(s.length() - 1)) {
return false;
}
return isPalindromeRecursion(s.substring(1, s.length() - 1));
}
/**
* Check if a string is palindrome string or not using two pointer technique
*
* @param s a string to check
* @return {@code true} if given string is palindrome, otherwise
* {@code false}
*/
public static boolean isPalindromeTwoPointer(String s) {
if (s == null || s.length() <= 1) {
return true;
}
for (int i = 0, j = s.length() - 1; i < j; ++i, --j) {
if (s.charAt(i) != s.charAt(j)) {
return false;
}
}
return true;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment