Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonで2つの文字列を交互に結合する方法(文字列インターリーブ)

文字列インターリーブとは

2つの文字列 st が与えられたとき、最初の文字列 s の文字から始めて、両者の文字を交互に並べた新しい文字列を作ることを「インターリーブ(交互結合)」と呼びます。片方の文字列が先に尽きた場合は、余った文字をそのまま末尾に追加します。

例えば、入力が s = "abcd"t = "pqrstu" の場合、出力は "apbqcrdstu" となります。

アルゴリズムの手順

この問題は、以下の手順で解くことができます。

  • 結果を格納する変数 res を空文字列として初期化します。
  • インデックス用の変数 i を 0 に設定します。
  • mst の長さのうち小さい方の値とします。
  • i < m の間、次の処理を繰り返します。
    • ress[i]t[i] をこの順で連結して追加します。
    • i を 1 増やします。
  • ループ終了後、ress のインデックス i 以降の部分と t のインデックス i 以降の部分を連結して返します。

実装例(Pythonコード)

class Solution:
    def solve(self, s, t):
        res = ""
        i = 0
        m = min(len(s), len(t))
        while i < (m):
            res += s[i] + t[i]
            i += 1
        return res + s[i:] + t[i:]

ob = Solution()
s = "abcd"
t = "pqrstu"
print(ob.solve(s, t))

入力

"abcd","pqrstu"

出力

apbqcrdstu

コードの解説

まず、短い方の文字列の長さ(m)だけループを回し、各位置の文字を st の順で交互に res へ追加していきます。この例では s(4文字)の方が t(6文字)より短いため、4回のループで "apbqcrds" が作られます。

続いて、スライス s[i:]t[i:] を使って余った文字を取り出し、末尾に連結します。s には余りがなく、t の残り "tu" が追加されるため、最終的な出力は "apbqcrdstu" となります。

  1. Pythonにおける引用符(クォート)の使い方

    Pythonで使える3種類の引用符Pythonでは、文字列リテラルを表すためにシングルクォート()、ダブルクォート()、そしてトリプルクォート( または )の3種類の引用符を使用できます。重要なルールとして、文字列の開始と終了には同じ種類の引用符を使う必要があります。たとえば、シングルクォートで始めた文字列はシングルクォートで閉じなければなりません。複数行の文字列を扱うトリプルクォートトリプルクォート( または )は、文字列を複数行にわたって記述したい場合に特に便利です。改行をそのまま文字列に含めることができるため、長い文章や段落を扱う際によく使われます。以下のコードは、すべて有効な文字列の定

  2. Pythonのcasefold()メソッドとは?文字列の小文字変換と比較方法を解説

    Pythonのcasefold()は、文字列内の英字をすべて小文字に変換するためのメソッドです。lower()と似ていますが、より積極的な変換を行う点が特徴で、ドイツ語の「ß」が「ss」に変換されるなど、国際化対応において強力な働きをします。2つの文字列に対してcasefold()を適用すれば、大文字・小文字の違いを無視して値を一致させることができます。そのため、ユーザー入力の比較や検索処理などで非常に役立ちます。casefold()の基本的な使い方次の例では、文字列にcasefold()を適用し、すべて小文字に変換された結果を出力しています。コード例string = BestTutorial