Pythonで2つの文字列からプレフィックス圧縮を実行するプログラム
2つの文字列sとtがあるとします(どちらにも小文字の英字が含まれています)。サイズ3のペアのリストを見つける必要があります。ここで、各ペアはこの形式(l、k)です。ここで、kは文字列、lはその長さです。これらの3つのペアのうち、最初のペアには、これら2つの文字列の最長の共通プレフィックスpであるsとtのサブ文字列が含まれ、次にsの残りの部分はs'であり、tの残りの部分はt'です。したがって、最終的なリストは[(pの長さ、p)、(s'、s'の長さ)、(t'、t'の長さ)]のようになります。
したがって、入力がs ="science" t ="school"の場合、出力は[(2、'sc')、(5、'ience')、(4、'hool')]
これを解決するには、次の手順に従います-
- lcp:=空白の文字列
- 0からsのサイズまたはtの最小サイズまでの範囲のiについては、
- s[i]がt[i]と同じ場合、
- lcp:=lcp + s [i]
- s[i]がt[i]と同じ場合、
- s_rem:=インデックス(lcpのサイズ)から終了までのsの部分文字列
- t_rem:=インデックス(lcpのサイズ)から終了までのtの部分文字列
- 3つのペアのリストを返す[(lcpのサイズ、lcp)、(s_remのサイズ、s_rem)、(t_remのサイズ、t_rem)]
例
理解を深めるために、次の実装を見てみましょう-
def solve(s, t): lcp = '' for i in range(min(len(s), len(t))): if s[i] == t[i]: lcp += s[i] s_rem = s[len(lcp):] t_rem = t[len(lcp):] return [(len(lcp), lcp), (len(s_rem), s_rem), (len(t_rem), t_rem)] s = "science" t = "school" print(solve(s, t))
入力
"science", "school"
出力
[(2, 'sc'), (5, 'ience'), (4, 'hool')]
-
2つの文字列から珍しい単語を見つけるPythonプログラム
この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 − 2つの文字列が与えられているので、与えられた文字列から珍しい単語を取得する必要があります。 次に、以下の実装のソリューションを見てみましょう- 例 # uncommon words def find(A, B): # count count = {} # insert in A for word in A.split(): count[word] = coun
-
2つの行列のPythonプログラム乗算。
与えられた2つのユーザー入力マトリックス。私たちのタスクは、2つの行列の加算を表示することです。これらの問題では、ネストされたリストを包括的に使用します。 アルゴリズム Step1: input two matrix. Step 2: nested for loops to iterate through each row and each column. Step 3: take one resultant matrix which is initially contains all 0. Then we multiply each row elements of first matrix