首頁 > Java > java教程 > 如何有效率判斷字串是否回文?

如何有效率判斷字串是否回文?

Mary-Kate Olsen
發布: 2024-12-26 10:16:13
原創
700 人瀏覽過

How to Efficiently Determine if a String is a Palindrome?

如何有效地檢查字串是否有回文

檢查字串是否有回文涉及驗證它們在兩個方向上的讀取是否相同。完成此任務的簡單方法是將字串轉換為字元陣列並比較相鄰元素。

以下是此方法的範例實作:

public class Aufg1 {
    // Main method for testing
    public static void main(String[] args) {
        String wort = "reliefpfpfeiller";
        char[] warray = wort.toCharArray();
        System.out.println(istPalindrom(warray));
    }

    // Method for checking palindromes
    public static boolean istPalindrom(char[] word) {
        boolean palindrom = false;
        if (word.length % 2 == 0) {
            for (int i = 0; i < word.length / 2 - 1; i++) {
                if (word[i] != word[word.length - i - 1]) {
                    return false;
                } else {
                    palindrom = true;
                }
            }
        } else {
            for (int i = 0; i < (word.length - 1) / 2 - 1; i++) {
                if (word[i] != word[word.length - i - 1]) {
                    return false;
                } else {
                    palindrom = true;
                }
            }
        }
        return palindrom;
    }
}
登入後複製

此程式碼迭代字元數組,比較兩端的元素以確定它們是否匹配。然而,有一種更優化的方法,涉及同時比較從開頭和結尾開始的元素。

改進的程式碼:

public static boolean istPalindrom(char[] word) {
    int i1 = 0;
    int i2 = word.length - 1;
    while (i2 > i1) {
        if (word[i1] != word[i2]) {
            return false;
        }
        ++i1;
        --i2;
    }
    return true;
}
登入後複製

範例:

使用輸入字串「andna」作為範例:

  • 將i1 初始化為0(代表字串的開頭),將i2 初始化為 4(代表字串的結尾)。
  • 循環將word[0] (a) 與word[4] (a).
  • i1 遞增至1,同時i2 遞減至3.
  • 循環繼續,比較word[1] (n) 與word[3] (n)。
  • i1 遞增到 2,而 i2 遞減到 2。
  • 現在,i1 等於 i2,因此循環終止,函數傳回 true,表示字串是回文。

以上是如何有效率判斷字串是否回文?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板