Pythonで2つの文字列を交互に結合する方法(文字列インターリーブ)
文字列インターリーブとは
2つの文字列 s と t が与えられたとき、最初の文字列 s の文字から始めて、両者の文字を交互に並べた新しい文字列を作ることを「インターリーブ(交互結合)」と呼びます。片方の文字列が先に尽きた場合は、余った文字をそのまま末尾に追加します。
例えば、入力が s = "abcd"、t = "pqrstu" の場合、出力は "apbqcrdstu" となります。
アルゴリズムの手順
この問題は、以下の手順で解くことができます。
- 結果を格納する変数
resを空文字列として初期化します。 - インデックス用の変数
iを 0 に設定します。 mをsとtの長さのうち小さい方の値とします。i < mの間、次の処理を繰り返します。resにs[i]とt[i]をこの順で連結して追加します。iを 1 増やします。
- ループ終了後、
resにsのインデックス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)だけループを回し、各位置の文字を s → t の順で交互に res へ追加していきます。この例では s(4文字)の方が t(6文字)より短いため、4回のループで "apbqcrds" が作られます。
続いて、スライス s[i:] と t[i:] を使って余った文字を取り出し、末尾に連結します。s には余りがなく、t の残り "tu" が追加されるため、最終的な出力は "apbqcrdstu" となります。
-
Pythonにおける引用符(クォート)の使い方
Pythonで使える3種類の引用符Pythonでは、文字列リテラルを表すためにシングルクォート()、ダブルクォート()、そしてトリプルクォート( または )の3種類の引用符を使用できます。重要なルールとして、文字列の開始と終了には同じ種類の引用符を使う必要があります。たとえば、シングルクォートで始めた文字列はシングルクォートで閉じなければなりません。複数行の文字列を扱うトリプルクォートトリプルクォート( または )は、文字列を複数行にわたって記述したい場合に特に便利です。改行をそのまま文字列に含めることができるため、長い文章や段落を扱う際によく使われます。以下のコードは、すべて有効な文字列の定
-
Pythonのcasefold()メソッドとは?文字列の小文字変換と比較方法を解説
Pythonのcasefold()は、文字列内の英字をすべて小文字に変換するためのメソッドです。lower()と似ていますが、より積極的な変換を行う点が特徴で、ドイツ語の「ß」が「ss」に変換されるなど、国際化対応において強力な働きをします。2つの文字列に対してcasefold()を適用すれば、大文字・小文字の違いを無視して値を一致させることができます。そのため、ユーザー入力の比較や検索処理などで非常に役立ちます。casefold()の基本的な使い方次の例では、文字列にcasefold()を適用し、すべて小文字に変換された結果を出力しています。コード例string = BestTutorial