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:
Have you consider that the string might be empty? This is a good question to ask during an interview.
For the purpose of this problem, we define empty string as valid palindrome.
1 public class Solution { 2 public bool IsPalindrome(string s) { 3 if (s == null || s.Length < 2) return true; 4 5 int i = 0, j = s.Length - 1; 6 7 while (i < j) 8 { 9 while (i < j && !Char.IsLetterOrDigit(s[i])) 10 { 11 i++; 12 } 13 14 while (i < j && !Char.IsLetterOrDigit(s[j])) 15 { 16 j--; 17 } 18 19 if (Char.ToLower(s[i]) != Char.ToLower(s[j])) return false; 20 i++; 21 j--; 22 } 23 24 return true; 25 } 26 }