diff --git a/Others/Palindrome.java b/Others/Palindrome.java index 28e9b5e38..af4a72fde 100644 --- a/Others/Palindrome.java +++ b/Others/Palindrome.java @@ -22,4 +22,29 @@ class Palindrome { return SecondWay(x.substring(1, x.length() - 1)); } + + /** + * This method ignores all non-alphanumeric characters and case runs in O(n) + * where n is the length of s + * + * @param s String to check + * @return true if s is palindrome else false + */ + public boolean isPalindrome(String s) { + s = s.toLowerCase().trim(); + StringBuilder sb = new StringBuilder(); + for (char c : s.toCharArray()) { + if (Character.isLetter(c) || Character.isDigit(c)) + sb.append(c); + } + s = sb.toString(); + int start = 0; + int end = s.length() - 1; + while (start <= end) { + if (s.charAt(start++) != s.charAt(end--)) + return false; + + } + return true; + } }