双指针
:left
:从前往后遍历字符串 ,right
从后往前遍历字符串,若发现不是字符则跳过continue
,进行比较是否相等
package KTwoPointers;
/**
* @Author Zhou jian
* @Date 2020 ${month} 2020/5/4 0004 00:51
* 给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写
*/
public class Problem125 {
public boolean isPalindrome(String s) {
if (s.length() == 0)
return true;
//将字符串全部转换为小写
String low = s.toLowerCase();
//定义左右指针
int i = 0;
int j = low.length() - 1;
while (i < j)
{
//若不是字符则跳过
if (!Character.isLetterOrDigit(low.charAt(i)))
{
i++;
continue;
}
if (!Character.isLetterOrDigit(low.charAt(j)))
{
j--;
continue;
}
//如字符不相等则跳过
if (low.charAt(i) != low.charAt(j))
return false;
else
{
//移动指针
i++;
j--;
}
}
return true;
}
}