在這篇文章中,我們將介紹一個常見面試問題——檢查給定的字串是否是回文。這個問題對於理解 Java 中的指標、迴圈和條件邏輯來說是一個很好的練習。
寫一個 Java 方法來檢查給定字串是否為回文。 回文是向前和向後讀相同的單字或片語(例如,「中午」或「女士」)。
此解決方案利用雙指針技術來檢查字串兩端的字符,向中心移動。透過比較對應位置的字符,我們可以確定字串是否是回文,而無需反轉它。
這是解決方案的程式碼:
public class StringPalindromeQuestion { // Method to check if a given string is a palindrome private boolean isPalindrome(String string) { if (string != null) { for (int i = 0, j = string.length() - 1; i < string.length() / 2; i++, j--) { if (string.charAt(i) != string.charAt(j)) { return false; } } } return true; } public static void main(String[] args) { StringPalindromeQuestion palindrome = new StringPalindromeQuestion(); String oddString = "abcdcba"; // Palindrome with odd length String evenString = "abccba"; // Palindrome with even length String nonPalindrome = "asfgsa"; // Not a palindrome // Result: true System.out.println(palindrome.isPalindrome(oddString)); // Result: true System.out.println(palindrome.isPalindrome(evenString)); // Result: false System.out.println(palindrome.isPalindrome(nonPalindrome)); // Testing with null // Result: true System.out.println(palindrome.isPalindrome(null)); } }
1。兩指針方法:
我們初始化兩個指標:一個在開頭 (i),一個在結尾 (j)。
我們比較這些位置的字元(string.charAt(i) 和 string.charAt(j)),並在每次比較後遞增 i 並遞減 j。
迴圈只運行到 string.length() / 2,無論長度是奇數還是偶數,都確保高效遍歷。
2。奇數與偶數長度:
對於偶數長度字串(例如「abccba」),該方法會檢查到中點,因此沒有中間字元未被檢查。
對於奇數長度字串(例如「abcdcba」),中間字元自然不會影響回文狀態。
3。空處理:
該方法在開頭檢查字串是否為空,以避免 NullPointerException。
奇數長度回文:「abcdcba」回傳true。
偶數長度回文:「abccba」回傳true。
非回文:「asfgsa」回傳 false。
空字串:傳回true(空輸入被此實作視為回文)。
了解兩指標技術對於有效解決許多基於字串的問題很有價值。這種技術避免了額外的空間複雜性,並透過限制不必要的比較來加快程式碼執行速度。
這個解決方案提供了一個乾淨有效的方法來檢查 Java 中的回文。嘗試將這種方法與不同的字串輸入一起使用,以進一步鞏固您對指標操作和字串遍歷的理解。
編碼快樂!
以上是字串:檢查回文的詳細內容。更多資訊請關注PHP中文網其他相關文章!