Leetcode - 125. 验证回文串
解题思路参考代码中的注释:
class Solution {
public boolean isPalindrome(String s) {
// 大写转小写,并将字符串转成字符数组,方便操作
char[] arr = s.toLowerCase().toCharArray();
// 分别从字符串的最左端和最右端开始向中间遍历
// 如果左指针指向的字符和右指针指向的字符不同,说明该字符串不是回文
int start = 0, end = arr.length - 1;
while (start < end) {
// 忽略无关字符
if (!isValidChar(arr[start])) {
start++;
continue;
}
// 忽略无关字符
if (!isValidChar(arr[end])) {
end--;
continue;
}
// 如果start和end指向的字符不相等,则可以断定该字符串不是回文
if (arr[start++] != arr[end--]) {
return false;
}
}
return true;
}
private static boolean isValidChar(char c) {
return (c >= '0' && c <= '9') || (c >= 'a' && c <= 'z');
}
}
