ホームページ > Java > &#&チュートリアル > 文字列を交互に結合する

文字列を交互に結合する

Barbara Streisand
リリース: 2025-01-06 16:18:42
オリジナル
553 人が閲覧しました

Merge Strings Alternately

プログラマーの皆さん!元気でいることを願っています。 LeetCode-75 シリーズのソリューションを共有できることを嬉しく思います。このシリーズでは、コーディング面接の準備に役立つ 75 の重要な問題が取り上げられています。

各投稿では、私のアプローチの詳細な説明とともに、私の解決策を紹介します。ご質問や改善のための提案がございましたら、お気軽にコメントに残してください。あなたと協力し、議論できることを楽しみにしています!コーディングを楽しんでください!

問題のリンクをここに追加しました: 文字列を交互に結合

問題の説明

2 つの文字列 word1 と word2 が与えられています。 word1 から始めて交互に文字を追加して、文字列を結合します。ある文字列が他の文字列より長い場合は、マージされた文字列の末尾に追加の文字を追加します。

マージされた文字列を返します。

*例 1: *

入力: word1 = "abc"、word2 = "pqr"
出力: "apbqcr"
説明: マージされた文字列は次のようにマージされます:
word1: a b c
word2: p q r
マージ: a p b q c r

例 2:

入力: word1 = "ab"、word2 = "pqrs"
出力: "apbqrs"
説明: word2 が長いため、最後に「rs」が追加されることに注意してください。
word1: a b
word2: p q r s
マージ: a p b q r s

** 例 3:**

入力: word1 = "abcd"、word2 = "pq"
出力: "apbqcd"
説明: word1 が長いため、最後に「cd」が追加されることに注意してください。
word1: a b c d
word2: p q
マージ: a p b q c d

解決

直感

2 つの文字列が与えられた場合、各文字列の文字を交互に並べて結合する必要があります。両方の文字列の長さが同じであれば、解決策は簡単ですが、異なる長さを持つこともできます。ポインターを使用して両方の文字列を反復処理し、両方のポインターが最後に到達するまで結果に文字を追加します。

アプローチ

  1. 両方の文字列の代替文字を保存する StringBuilder を作成します。
  2. 各文字列の現在位置を追跡するために 2 つのポインターを作成します。
  3. 両方のポインターがそれぞれの文字列の末尾に到達するまで、両方の文字列を繰り返します。
  4. 文字列が空でない場合は StringBuilder に要素を追加し、ポインタをインクリメントします
  5. StringBuilder を返す

複雑

  • 時間計算量:
    時間計算量は O(n) です。n は、文字列を反復処理するときの長い文字列の長さです。

  • 空間の複雑さ:
    StringBuilder といくつかの変数を使用するため、時間計算量は 0(1) です。

コード

  public String mergeAlternately (String word1, String word2) {
    // ? Create a StringBuilder to build the result string efficiently
    StringBuilder completeWord = new StringBuilder();

    // ? Initialize two pointers to traverse both strings
    int p1 = 0;
    int p2 = 0;

    // ? Iterate through both strings until both pointers reach the end of their resépectives strings
    while (p1 < word1.length() || p2 < word2.length()) {
      // ? Append the current character from words if the pointer is within bounds
      if (p1 < word1.length()) completeWord.append(word1.charAt(p1));
      if (p2 < word2.length()) completeWord.append(word2.charAt(p2));
      p1++;
      p2++;
    }
    // ? Convert the StringBuilder to a string and return it
    return completeWord.toString();
  }
ログイン後にコピー

以上が文字列を交互に結合するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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