ホームページ > Java > &#&チュートリアル > 文字列: 回文のチェック

文字列: 回文のチェック

Susan Sarandon
リリース: 2024-11-10 09:52:02
オリジナル
772 人が閲覧しました

Strings: Checking for Palindromes

この投稿では、面接でよくある質問、つまり指定された文字列が回文かどうかを確認する方法について説明します。この問題は、Java のポインター、ループ、条件付きロジックを理解するための優れた練習になります。


問題提起

指定された文字列が回文であるかどうかを確認する Java メソッドを作成します。 回文は、前から見ても後ろから読んでも同じ単語またはフレーズです (例: 「正午」または「マダム」)。


ソリューションの概要

このソリューションでは、2 ポインター手法 を利用して、文字列の両端から中央に向かって文字をチェックします。対応する位置にある文字を比較することで、文字列を反転することなく、その文字列が回文であるかどうかを判断できます。

アプローチの重要なポイント:

  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. 2 点アプローチ:

  • 2 つのポインターを初期化します。1 つは先頭 (i)、もう 1 つは末尾 (j) です。

  • これらの位置 (string.charAt(i) と string.charAt(j)) の文字を比較し、比較するたびに i をインクリメントし、j をデクリメントします。

  • ループは string.length() / 2 までのみ実行され、長さが奇数か偶数かに関係なく効率的な走査が保証されます。

2.奇数と偶数の長さ:

  • 偶数長文字列 (例: "abccba") の場合、メソッドは中間点までチェックするため、中間の文字がチェックされないままになることはありません。

  • 奇数長文字列 (例: "abcdcba") の場合、当然のことながら、中央の文字は回文ステータスに影響しません。

3. Null 処理:
このメソッドは、NullPointerException を回避するために、最初に文字列が null かどうかをチェックします。

出力例

  • 奇数長の回文: "abcdcba" は true を返します。

  • 偶数長回文: "abccba" は true を返します。

  • 非回文: "asfgsa" は false を返します。

  • Null String: true を返します (この実装では、null 入力は回文とみなされます)。


面接のヒント?

2 ポインター手法を理解することは、多くの文字列ベースの問題を効率的に解決するために役立ちます。この手法は、余分なスペースの複雑さを回避し、不必要な比較を制限することでコードの実行を高速化します。


結論

このソリューションは、Java で回文をチェックするクリーンで効率的な方法を提供します。ポインター操作と文字列トラバーサルの理解をさらに深めるために、さまざまな文字列入力でこのアプローチを試してみてください。


関連記事

  • Java の基礎
  • アレイインタビューの必需品
  • Java メモリの基礎
  • Java キーワードの基礎
  • Java OOP の基本
  • コレクション フレームワークの基本

コーディングを楽しんでください!

以上が文字列: 回文のチェックの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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