【双指针】125. 验证回文串
思路
双指针:定义首尾两个指针,然后向中间遍历,判断两个指针指向的元素是否相等,不相等直接判定不是回文字符串
代码
class Solution {
public boolean isPalindrome(String s) {
char[] arr = s.toCharArray();// 先转化为字符数组
// 定义首位指针
int head = 0;
int tail = arr.length - 1;
char cHead,cTail;
while(head <= tail)
{
cHead = arr[head];
cTail = arr[tail];
// 首先需要过滤 非数字或者字母
if(!Character.isLetterOrDigit(cHead))
{
++head;
}
else if(!Character.isLetterOrDigit(cTail))
{
tail--;
}
else{
if(Character.toLowerCase(cHead) != Character.toLowerCase(cTail))
{
// 忽略字母的大小写 不相等 直接false
// 字符个数 奇数:两个指针正好重叠 最后
// 字符个数 偶数:两个指针正好相邻
return false;
}
++head;
--tail;
}
}
return true;
}
}