整站優(yōu)化方案網(wǎng)站優(yōu)化技巧
力扣(LeetCode)官網(wǎng) - 全球極客摯愛的技術(shù)成長平臺
如果在將所有大寫字符轉(zhuǎn)換為小寫字符、并移除所有非字母數(shù)字字符之后,短語正著讀和反著讀都一樣。則可以認(rèn)為該短語是一個(gè)?回文串?。
字母和數(shù)字都屬于字母數(shù)字字符。
給你一個(gè)字符串?
s
,如果它是?回文串?,返回?true
?;否則,返回?false
?。
解題思路:
我們直接在原字符串 sss 上使用雙指針。在移動任意一個(gè)指針時(shí),需要不斷地向另一指針的方向移動,直到遇到一個(gè)字母或數(shù)字字符,或者兩指針重合為止。也就是說,我們每次將指針移到下一個(gè)字母字符或數(shù)字字符,再判斷這兩個(gè)指針指向的字符是否相同。
?
代碼如下:
class Solution {public boolean isPalindrome(String s) {int left = 0, right = s.length() - 1;if(s.length() == 0){return true;}while(left < right) {while(left < right && !Character.isLetterOrDigit(s.charAt(left))){left++;}while(left < right && !Character.isLetterOrDigit(s.charAt(right))){right--;}if(left < right){if(Character.toLowerCase(s.charAt(left)) != Character.toLowerCase(s.charAt(right))){return false;}}left++;right--;}return true;}
}
?