使用雙指針 low (頭) 和 high (尾) 向中間逼近比較:
s.charAt(low) != s.charAt(high),說明不是迴文,直接跳出。int low = 0;
int high = s.length() - 1;
boolean isPalindrome = true;
while (low < high) {
// 取頭尾字元比較
if (s.charAt(low) != s.charAt(high)) {
isPalindrome = false;
break; // 發現不同立即結束
}
low++; // 頭指針右移
high--; // 尾指針左移
}
| 輸入字串 | 結果 | 說明 |
|---|---|---|
| "abba" | true | 對稱 |
| "abbcba" | false | 第 2 與倒數第 2 字元不同 (b vs c) |
| "a" | true | 單字元預設為迴文 |