【LeetCode】 125. 验证回文串
程序员文章站
2022-07-13 08:43:12
...
题目 |
题目传送门:点击此处
题解 |
思路
- 先不考虑字符的有效,如果只是判断是不是回文就很好判断,两个指针,一个指向头,一个指向尾,遍历到中间结束
- 现在有特殊字符,那么就要考虑一下坐标要怎么变的问题了,思路跟原来的一样,也是两个指针,一个头,一个尾,怎么变是需要思考的
- 在移动的时候,判断当前的字符是不是有效的
- 比对字符串的时候要考虑是数字还是字母,它们的比对方式不一样
代码
class Solution {
public boolean isPalindrome(String s) {
int i = 0;
int j = s.length() - 1;
while (i <= j) {
char chari = s.charAt(i);
char charj = s.charAt(j);
if (!validChar(chari)) { // 判断索引为 i 的字符是不是有效字符
i++;
} else if (!validChar(charj)) { // 判断索引为 j 的字符是不是有效字符
j--;
} else { // 索引为 i 或者 j 的字符都是有效字符,就比较两个字符,然后再移动指针 i 和 j
if (j < i) return false;
if (!equalChar(chari, charj)) return false;
i++;
j--;
}
}
return true;
}
private static boolean validChar(char c) {
if ((c >= 48 && c <= 57) || (c >= 65 && c <= 90) || (c >= 97 && c <= 122)) return true;
return false;
}
private static boolean equalChar(char c1, char c2) {
if ((c1 >= 48 && c1 <= 57) || (c2 >= 48 && c2 <= 57)) return c1 == c2 ? true : false;
if (c1 == c2) return true;
else if (c1 + 32 == c2) return true;
else if (c1 == c2 + 32) return true;
else return false;
}
}
上一篇: 【leetcode】125. 验证回文串
下一篇: leetcode 125. 验证回文串