Menu
CoddyTech

Word Ladder

むずかしいグラフキューpython iconjava iconcpp iconc iconjs icon+10

beginWordとendWordの2つの単語と、単語のリストwordListが与えられます。ラダーはbeginWordで始まり、endWordで終わり、隣り合う単語同士でちょうど1文字だけを変更します。beginWordの後に続く単語はすべてwordListに含まれていなければならないため、endWordはwordListに含まれている必要がありますが、beginWordは含まれていなくてもかまいません。

最短のラダーに含まれる単語数を、両端の単語も数えて返してください。そのようなラダーが存在しない場合は0を返してください。

関数

ladderLength(beginWord: string, endWord: string, wordList: string-array) → integer
beginWordstring
はしごの最初の単語
endWordstring
はしごがたどり着かなければならない単語
wordListstring-array
後続するすべてのステップで使う単語の出どころ
戻り値integer
最短のラダーに含まれる単語数。存在しない場合は0

制約

  • 1 ≤ beginWord.length ≤ 10
  • endWordとwordList内のすべての単語は、beginWordと同じ長さです。
  • 1 ≤ wordList.length ≤ 5000
  • すべての単語は小文字の英字のみで構成されています。
  • beginWord != endWord
  • wordListに含まれる単語はすべて異なります。beginWordはその中の1つである場合も、そうでない場合もあります。

例

入力
beginWord = "lead"endWord = "gold"wordList = ["load", "goad", "gold", "lend", "lewd", "bold"]
出力
4
説明
lead と gold は3文字異なるため、ラダーには少なくとも4つの単語が必要です。また、lead、load、goad、gold は4つです。lend と lewd は行き止まりです。
challenge icon

発展問題

長さではなく、最短のラダーを1つ、単語を順番に並べて返すことはできますか?

コードをリセット
def ladderLength(beginWord, endWord, wordList):
    # ここにコードを書いてください

テスト #1

テスト #2

テスト #3

引数

beginWord = "lead"
endWord = "gold"
wordList = ["load", "goad", "gold", "lend", "lewd", "bold"]

期待される出力

4