LeetCode125 驗證回文串
題目描述:
給定一個字符串,驗證它是否是回文串,只考慮字母和數(shù)字字符,可以忽略字母的大小寫。
說明:本題中,我們將空字符串定義為有效的回文串。
示例 1:
輸入: "A man, a plan, a canal: Panama"
輸出: true
示例 2:
輸入: "race a car"
輸出: false
復(fù)制代碼
代碼:
public boolean isPalindrome(String s) {
// 使用左右兩個標(biāo)記位
int left = 0;
int right = s.length()-1;
while (left < right) {
// 從左側(cè),找到是數(shù)字或者字母的
while (left < right && !Character.isLetterOrDigit(s.charAt(left))) {
left++;
}
// 從右側(cè),找到是數(shù)字或者字母的
while (left < right && !Character.isLetterOrDigit(s.charAt(right))) {
right--;
}
if (left < right) {
// 找到數(shù)字或者字母的左右兩個標(biāo)記位的元素不等(注意都轉(zhuǎn)化成小寫的字母),返回false
if (Character.toLowerCase(s.charAt(left)) != Character.toLowerCase(s.charAt(right))) {
return false;
}
++left;
--right;
}
}
return true;
}
復(fù)制代碼
image.png