Today I will show you a algorithm to find out if a string is a palindrome or not, the algorithm is pretty straightforward and does not need much explanation. It runs Big O(n) and isn't case sensitive:
If you want test cases you can visit http://www.palindromelist.net/ and test if a phrase is or isn't a palindrome.
/**
* Verify if the value is a palindrome. The algorithm is not case sensitive and only compare words.
* The algorithm runs in big O(n).
*
* @param value that represent a palindrome
* @return {@code value} is a palindrome
*/
private static boolean isPalindrome(String value) {
value = Optional.ofNullable(value).map(v -> v.replaceAll("\\W", "")).orElse("");
if (value.isEmpty()) {
return false;
}
final char[] chars = value.toCharArray();
int length = value.length();
for (int i = 0; i < length; i++) {
char charI = Character.toUpperCase(chars[i]);
char charJ = Character.toUpperCase(chars[length - i - 1]);
if (charI != charJ) {
return false;
}
}
return true;
}
Nenhum comentário:
Postar um comentário