Menu
CoddyTech

Longest Common Subsequence

ふつう動的計画法python iconjava iconcpp iconc iconjs icon+10

2つの文字列 text1 と text2 が与えられます。文字列の部分列とは、文字の一部を元の順序のまま残し、残りを削除したものです。残す文字は隣り合っている必要はありません。両方の文字列の部分列である最長の文字列の長さを返してください。共通する文字がない場合は 0 を返してください。

関数

longestCommonSubsequence(text1: string, text2: string) → integer
text1string
最初の文字列
text2string
2番目の文字列
戻り値integer
最長共通部分列の長さ

制約

  • 1 ≤ text1.length ≤ 1000
  • 1 ≤ text2.length ≤ 1000
  • 両方の文字列には、小文字の英字のみが含まれています。

例

入力
text1 = "stone"text2 = "longest"
出力
3
説明
o、n、eは両方の単語にこの順序で現れるため、共通するのは長さ3のoneです。文字sとtはlongestでは最後に現れますが、stoneでは最初に現れるため、これらを使っても最大でstまでです。
challenge icon

発展問題

最長共通部分列の長さとともに、そのうちの1つ自体を返すことはできますか?

コードをリセット
def longestCommonSubsequence(text1, text2):
    # ここにコードを書いてください

テスト #1

テスト #2

テスト #3

引数

text1 = "stone"
text2 = "longest"

期待される出力

3