125. Valid Palindrome
题目的原意是给定一个string,写一个方法来判断是否是palindrome string。只考虑字母忽略其他。
given: a string, determine if it is a palindrome, considering only alphanumeric characters and ignoring cases.
e.g."A man, a plan, a canal: Panama" is a palindrome.
"race a car" is not a palindrome.
解题思路:可以考虑使用low 和 high two pointers来判断是否相同的字母。
需要考虑的情况,string为空时,函数返回True。如果two pointers遇到字母跳过。如果two pointers的字母不一致,函数返回false。这个方法的runtime是 O(n).
public boolean isPalindrome(String s) {
int i = 0;
int j = s.length() - 1;
while (i < j) {
while (i < j && !Character.isLetterOrDigit(s.charAt(i))) i++;
while (i < j && !Character.isLetterOrDigit(s.charAt(j))) j--;
if (Character.toLowerCase(s.charAt(i)) != Character.toLowerCase(s.charAt(j))){
return false;
}
i++;j--;
}
return true;
}