Valid Palindrome
判定回文字符串
这里可以通过维护两个指针来实现,即一个从左边开始遍历,一个指针从右边开始遍历,在遍历的时候需要处理空格。
源码如下:
C++版本:
class Solution {
public:
bool isPalindrome(string s) {
int start=0, end=s.length()-1;
while(start<end) {
if (!isalnum(s[start]))
start++;
else if (!isalnum(s[end]))
end--;
else {
if (tolower(s[start++])!=tolower(s[end--]))
return false;
}
}
return true;
}
};
JAVA版本:
public class Solution {
public boolean isPalindrome(String s) {
if (s == null) {
return true;
}
int i = 0;
int j = s.length() - 1;
while (i < j) {
if (!isAlphanumeric(s.charAt(i))) {
i++;
continue;
}
if (!isAlphanumeric(s.charAt(j))) {
j--;
continue;
}
if(Character.toLowerCase(s.charAt(i)) == Character.toLowerCase(s.charAt(j))) {
i++;
j--;
continue;
}
return false;
}
return true;
}
public boolean isAlphanumeric(char c) {
if ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z') || (c >= '0' && c <= '9')) {
return true;
}
return false;
}
}