50 lines
1.2 KiB
Java
50 lines
1.2 KiB
Java
/*
|
|
* @lc app=leetcode id=125 lang=java
|
|
*
|
|
* [125] Valid Palindrome
|
|
*/
|
|
|
|
// @lc code=start
|
|
class Solution {
|
|
public boolean isPalindrome(String s) {
|
|
int i = 0, j = s.length()-1;
|
|
boolean r = true;
|
|
while(i < j) {
|
|
while(i<j && !isAlphanumberic(s.charAt(i))) {
|
|
i++;
|
|
}
|
|
while(i<j && !isAlphanumberic(s.charAt(j))) {
|
|
j--;
|
|
}
|
|
if(i>=j) {
|
|
break;
|
|
}
|
|
if(!isSameLeterIgnoreCase(s.charAt(i), s.charAt(j))) {
|
|
r = false;
|
|
break;
|
|
}
|
|
i++;
|
|
j--;
|
|
}
|
|
return r;
|
|
}
|
|
|
|
private boolean isAlphanumberic(char c) {
|
|
return isAlpha(c) || isNumberic(c);
|
|
}
|
|
|
|
private boolean isAlpha(char c) {
|
|
return c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z';
|
|
}
|
|
|
|
private boolean isNumberic(char c) {
|
|
return c >= '0' && c <= '9';
|
|
}
|
|
|
|
private boolean isSameLeterIgnoreCase(char a, char b) {
|
|
return isNumberic(a) && a == b || isAlpha(a) && isAlpha(b) && Character.toLowerCase(a) == Character.toLowerCase(b);
|
|
}
|
|
}
|
|
// @lc code=end
|
|
|