首頁  >  文章  >  Java  >  字串:檢查回文

字串:檢查回文

Susan Sarandon
Susan Sarandon原創
2024-11-10 09:52:02685瀏覽

Strings: Checking for Palindromes

在這篇文章中,我們將介紹一個常見面試問題——檢查給定的字串是否是回文。這個問題對於理解 Java 中的指標、迴圈和條件邏輯來說是一個很好的練習。


問題陳述

寫一個 Java 方法來檢查給定字串是否為回文。 回文是向前和向後讀相同的單字或片語(例如,「中午」或「女士」)。


解決方案概述

此解決方案利用雙指針技術來檢查字串兩端的字符,向中心移動。透過比較對應位置的字符,我們可以確定字串是否是回文,而無需反轉它。

該方法的要點:

  1. 雙指標技術:從兩個方向檢查字元。
  2. 提前退出:一旦發現不匹配就停止。
  3. 最佳化:僅遍歷字串長度的一半以提高效率。

程式碼解決方案

這是解決方案的程式碼:

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 中的回文。嘗試將這種方法與不同的字串輸入一起使用,以進一步鞏固您對指標操作和字串遍歷的理解。


相關貼文

  • Java 基礎
  • 陣列面試要點
  • Java 記憶體要點
  • Java 關鍵字要點
  • Java OOP 基礎知識
  • 集合框架要點

編碼快樂!

以上是字串:檢查回文的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn