ホームページ >Java >&#&チュートリアル >回文文字列チェックを最適化するにはどうすればよいでしょうか?

回文文字列チェックを最適化するにはどうすればよいでしょうか?

DDD
DDDオリジナル
2024-12-23 17:35:09901ブラウズ

How Can We Optimize Palindrome String Checking?

回文チェック用のコードの改善

文字列が回文であるかどうかをチェックするために、両端の文字を比較するメソッドを開発しました。真ん中に向かって。ただし、最適化の余地はあります。

最適化されたアプローチ:

次のコードは、よりシンプルで効率的なソリューションを提供します:

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;
}

説明:

このコードは 2 つのポインターを利用します。 i1 と i2 は、それぞれ単語の先頭と末尾に初期化されます。 i2 が i1 と交差するまで内側に反復されます。

  • word[i1] と word[i2] の文字が一致しない場合、メソッドは false を返します。
  • 一致する場合、両方のポインタが中心に向かって移動します。i1 は増加し、i2 は減少します。

ポインタが移動するとき

例:

単語 "andna" の場合:

  • 最初、i1 は 0 (単語の始まり)、i2 は 4 (単語の終わり) word).
  • ループ反復:

    • i1 (0) の文字は 'a' です。 i2 (4) の文字は「a」です。一致するので、両方のポインタを中央に向かって移動します。
    • i1 (1) の文字は「n」です。 i2 (3) の文字は「n」です。これらは一致します。
    • i1 (2) と i2 (2) が交差しているため、すべての文字が正常に比較されました。

メソッドは true を返し、確認します。その「andna」は回文です。

以上が回文文字列チェックを最適化するにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。