LeetCode - 125. Valid Palindrome 验证回文串
题目
解析
也是使用双指针,过程和上面的类似,不过要处理一下大小写和数字的问题;
class Solution {
public boolean isC(char c) {
return Character.isLetter(c);
}
public boolean isD(char c) {
return Character.isDigit(c);
}
public boolean ok(char lc, char rc) {
return (isD(lc) && isD(rc) && lc == rc) ||
(isC(lc) && isC(rc) && Character.toLowerCase(lc) == Character.toLowerCase(rc));
}
public boolean isPalindrome(String s) {
boolean flag = true;
char[] str = s.toCharArray();
for (int l = 0, r = str.length - 1; l <= r; ) {
if (!isC(str[l]) && !isD(str[l])) {
l++;
continue;
}
if (!isC(str[r]) && !isD(str[r])) {
r--;
continue;
}
if (ok(str[l], str[r])) {
l++;
r--;
} else {
flag = false;
break;
}
}
return flag;
}
}
或者更加简单的写法:
class Solution {
public boolean isLD(char c) {
return Character.isLetterOrDigit(c);
}
public boolean isPalindrome(String s) {
s = s.toLowerCase();
char[] str = s.toCharArray();
for (int l = 0, r = str.length - 1; l <= r; ) {
if (!isLD(str[l]))
l++;
else if (!isLD(str[r]))
r--;
else if (str[l] != str[r])
return false;
else {
l++;
r--;
}
}
return true;
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论