ホームページ > Java > &#&チュートリアル > 文字列が回文であるかどうかを効率的に確認するにはどうすればよいでしょうか?

文字列が回文であるかどうかを効率的に確認するにはどうすればよいでしょうか?

Patricia Arquette
リリース: 2024-12-28 00:01:09
オリジナル
814 人が閲覧しました

How Can We Efficiently Check if a String is a Palindrome?

洗練された回文チェッカー

このデモでは、指定された文字列が回文であるかどうかをチェックする複雑さを掘り下げます。回文は、前方と後方の両方で同じように読まれるという注目すべき特性を示します。一般的なアプローチの 1 つは、文字列を char 配列に変換し、配列の両端にある各文字を比較することです。

しかし、より効率的で簡潔な解決策があります。

public static boolean isPalindrome(char[] word) {
    int i1 = 0;
    int i2 = word.length - 1;
    while (i2 > i1) {
        if (word[i1] != word[i2]) {
            return false;
        }
        ++i1;
        --i2;
    }
    return true;
}
ログイン後にコピー

これは拡張されました。このメソッドには、単語の先頭と末尾から繰り返し、途中で各文字を比較する while ループが組み込まれています。一致しない文字のペアがある場合、その文字列は回文ではありません。単語の途中で出会うまで i1 をインクリメントし、i2 をデクリメントすることで、効率的に回文をチェックできます。

例:

入力文字列「andna」を考えます。 :

  • i1 = 0、i2 = 4
  • word[0] (a) と word[4] (a) を比較します: 等しい

    • i1 = 1, i2 = 3
  • word[1] (n) と word[3] (n) を比較します。 Equal

    • i1 = 2, i2 = 2
  • i1 と i2 が等しくなったので、ループは終了して true を返します。

この最適化されたアルゴリズムは、指定された文字列が回文。

以上が文字列が回文であるかどうかを効率的に確認するにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート