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 です。longest では文字 s と t は最後に現れますが、stone では最初に現れるため、それらを使う共通部分列は st だけで、より短くなります。

lock icon提出時に隠しテスト+19件

challenge icon

発展問題

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

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

ケース1

ケース2

ケース3

入力

text1 = "stone"
text2 = "longest"

期待値

3