Valid Palindrome (E)
Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignoring cases.
Note: For the purpose of this problem, we define empty string as valid palindrome.
Example 1:
Input: "A man, a plan, a canal: Panama"
Output: true
Example 2:
Input: "race a car"
Output: false
题意
忽略给定字符串中的非字母数字的字符,判断该字符串是否为回文串(忽略大小写)。
思路
Two pointers。
代码实现
class Solution {
public boolean isPalindrome(String s) {
if (s.isEmpty()) {
return true;
}
int i = 0, j = s.length() - 1;
while (i < j) {
while (i < j && !isAlphanumeric(s.charAt(i))) {
i++;
}
while (i < j && !isAlphanumeric(s.charAt(j))) {
j--;
}
char cI = s.charAt(i), cJ = s.charAt(j);
cI = cI >= 'a' && cI <= 'z' ? (char) (cI - 32) : cI;
cJ = cJ >= 'a' && cI <= 'z' ? (char) (cJ - 32) : cJ;
if (cI != cJ) {
return false;
}
i++;
j--;
}
return true;
}
private boolean isAlphanumeric(char c) {
return c >= '0' && c <= '9' || c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z';
}
}
本文深入解析了ValidPalindrome算法,一种用于判断字符串是否为回文串的有效方法,特别强调了忽略非字母数字字符和大小写的功能。通过双指针技巧,算法高效地验证了字符串的回文特性。
999

被折叠的 条评论
为什么被折叠?



