题目:
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.
思路:
- 题意:判断一个字符串是不是回文
- 这道题可以采用双指针,开头first,结尾sed,first++,sed–,first < sed
- 要求不考虑大小写,全部转化为大写,同时判断字符是不是字母和数字,‘A’,‘Z’,‘0’,‘9’
代码:
public class Solution {
public boolean isPalindrome(String s) {
if(s == null){
return true;
}
char A = 'A';
char Z = 'Z';
char numMin = '0';
char numMax = '9';
s = s.toUpperCase();
int first = 0;
int sed = s.length() - 1;
while(first < sed){
if((s.charAt(first) < A||s.charAt(first) > Z) && (s.charAt(first) < numMin||s.charAt(first) > numMax)){
first++;
continue;
}
if((s.charAt(sed) < A||s.charAt(sed) > Z) && (s.charAt(sed) < numMin||s.charAt(sed) > numMax)){
sed--;
continue;
}
if(s.charAt(first) == s.charAt(sed)){
first++;
sed--;
}else{
return false;
}
}
return true;
}
}