判断给定字符串是否为回文字符串,用Java优化
时间: 2023-11-01 11:10:25 浏览: 114
可以使用双指针的方法来判断字符串是否为回文字符串,具体思路如下:
1. 定义两个指针,一个从字符串的起始位置开始,向右移动,另一个从字符串的末尾位置开始,向左移动。
2. 每次移动指针时,判断当前字符是否相同,如果不同,说明该字符串不是回文字符串,直接返回false。
3. 如果两个指针相遇或者交叉,说明该字符串是回文字符串,返回true。
代码如下:
```java
public class Solution {
public boolean isPalindrome(String s) {
if (s == null) {
return false;
}
int left = 0;
int right = s.length() - 1;
while (left < right) {
while (left < right && !Character.isLetterOrDigit(s.charAt(left))) {
left++;
}
while (left < right && !Character.isLetterOrDigit(s.charAt(right))) {
right--;
}
if (Character.toLowerCase(s.charAt(left)) != Character.toLowerCase(s.charAt(right))) {
return false;
}
left++;
right--;
}
return true;
}
}
```
为了更好地处理输入字符串中的特殊字符,如空格、标点符号等,可以在判断字符是否相同之前,先将两个指针移动到下一个字母或数字的位置。同时,为了不区分大小写,可以将字母转换为小写字母再进行比较。
阅读全文