判斷一個字符串是否為回文字符串的常見方法是使用雙指針。首先,我們定義兩個指針,一個指向字符串的起始位置,另一個指向字符串的末尾位置。然后,在每一步迭代中,我們比較兩個指針所指向的字符是否相等。如果相等,我們將兩個指針向中間移動一位繼續比較;如果不相等,說明字符串不是回文字符串,返回false。直到兩個指針相遇,或者其中一個指針超過另一個指針,即遍歷完整個字符串,都沒有出現不相等的情況,則字符串是回文字符串,返回true。
以下是一個用Java實現的回文字符串判斷的示例代碼:
public class Palindrome {
public static boolean isPalindrome(String str) {
int start = 0; // 起始指針
int end = str.length() - 1; // 末尾指針
while (start < end) {
if (str.charAt(start) != str.charAt(end)) {
return false; // 不相等,不是回文字符串
}
start++;
end--;
}
return true; // 相等,是回文字符串
}
public static void main(String[] args) {
String str = "abcba";
System.out.println(isPalindrome(str)); // 輸出:true
}
}
在上述代碼中,我們使用了charAt()
方法獲取字符串中指定位置的字符,并使用==
運算符比較字符是否相等。注意,在Java中,字符串的索引從0開始,所以起始指針start
初始化為0,末尾指針end
初始化為字符串長度減1。在每一步迭代中,我們將start
指針向后移動一位,將end
指針向前移動一位,直到兩個指針相遇或者交錯。如果在迭代過程中出現不相等的字符,說明字符串不是回文字符串,返回false。如果迭代完整個字符串都沒有出現不相等的情況,說明字符串是回文字符串,返回true。