Title Description:
Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignoring cases.
For example,
"A man, a plan, a canal: Panama"
is a palindrome.
"race a car"
is not a palindrome.
Note:
Are you consider that the string might is empty? This was a good question to ask during a interview.
For the purpose of this problem, we define empty string as valid palindrome.
Problem Solving Ideas:
Set two pointers, one at the head of the string, one at the end of the string, the other in the middle, and a non-letter or number to move in the middle, such as two letters or numbers, then compare the two.
The code is as follows:
public class Solution {public Boolean ispalindrome (String s) { int i = 0, j = s.length ()-1; char head, tail; if (J < 0) return true; while (I < j) { head = S.charat (i); Tail = S.charat (j); if (! Character.isletterordigit (head)) { i++; } if (! Character.isletterordigit (tail)) { j--; } if (Character.isletterordigit (head) && character.isletterordigit (tail)) { if (character.tolowercase ( Head)! = Character.tolowercase (tail)) { return false; } i++; j--; } } return true; }}
Java [Leetcode 125]valid palindrome