题目:
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.
思路:用一个变量指向头部,另一个变量指向尾部,看两个变量是否相等,如果相等则两个变量移动看是否相等,不相等则返回false。
代码:
public class Solution { public boolean isPalindrome(String s) { int i = 0; int j = s.length() - 1; while (i < j) { while (!isLetterOrNumber(s.charAt(i))&&i<j){ i++; } while(!isLetterOrNumber(s.charAt(j))&&i<j){ j--; } if(i<j && Character.toLowerCase(s.charAt(i)) != Character.toLowerCase(s.charAt(j))){ return false; } i++; j--; } return true; } public boolean isLetterOrNumber(char ch){ if(ch>='0' && ch<='9'||ch>='a' && ch<='z'||ch>='A'&& ch<='Z'){ return true; } return false; } }