A palindrome is a word, number, phrase, or other sequence of characters which reads the same backward as forward, such as madam, racecar.
There are also numeric palindromes, including date/time stamps using short digits 11/11/11 11:11 and long digits 02/02/2020. Sentence-length palindromes ignore capitalization, punctuation, and word boundaries, so “A man, a plan, a canal, Panama!” is treated as AMANAPLANACANALPANAMA.
Example 1:
Input: "A man, a plan, a canal: Panama" Output: true
Example 2:
Input: "race a car" Output: false
Constraints:
s
consists only of printable ASCII characters.
Solution
- Remove all characters that is not alphanumber, e.g.
;
`, . :` - Check if the new string equals its reverse
Kotlin implementation
#Kotlin implementation
class Solution {
fun isPalindrome(s: String): Boolean {
val s1 = s.toLowerCase().replace("[^a-zA-Z0-9]".toRegex(), "")
return s1 == s1.reversed()
}
}
For more Kotlin tutorial, go here.
Java Implementation
Check by comparing chars
static boolean isPalindrome(String str)
{
// Pointers pointing to the beginning
// and the end of the string
int i = 0, j = str.length() - 1;
// While there are characters toc compare
while (i < j) {
// If there is a mismatch
if (str.charAt(i) != str.charAt(j))
return false;
// Increment first pointer and
// decrement the other
i++;
j--;
}
// Given string is a palindrome
return true;
}