问题描述:
Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignoring cases.
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. (别忽视这个临界条件了)
示例:
"A man, a plan, a canal: Panama" is a palindrome.
"race a car"
is not a palindrome
问题来源:Valid Palindrome (详细地址:https://leetcode.com/problems/valid-palindrome/description/)
思路分析:
这道题的关键是加粗的那部分描述,只需要考虑字母字符;并且忽略掉大小写;如果字符串是空的话,返回的是true。和Reverse Vowels of a String 有那么点相似,在这,我们采用的是isLetterOrDigit()方法过滤掉非字母的字符,另外用toLowerCase()方法将每个字符转化为小写字母。注意这两个方法的参数都是字符,所以我们就同意采用了字符数组,另外,你觉得浪费空间的话,那我们可以用charAt()方法。此外就是和以前是一样的,两指针往中间并拢。
代码: