Menu
CoddyTech

Word Ladder

מקבלים שתי מילים, beginWord ו-endWord, ורשימת מילים wordList. סולם הוא רצף של מילים שמתחיל ב-beginWord, מסתיים ב-endWord, ובכל מעבר ממילה למילה אחריה משתנה בדיוק אות אחת. כל מילה אחרי beginWord חייבת להופיע ב-wordList.

החזירו את מספר המילים בסולם הקצר ביותר, כולל שתי המילים שבקצותיו, או 0 אם לא קיים סולם. לדוגמה, cold, cord, card הם סולם בן 3 מילים. beginWord לא חייבת להופיע ב-wordList, אבל endWord חייבת.

פונקציה

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 היא אחת מהן, וייתכן שלא.

דוגמאות

קלט
beginWord = "lead"endWord = "gold"wordList = ["load", "goad", "gold", "lend", "lewd", "bold"]
פלט
4
הסבר
המילים lead ו־gold שונות בשלוש אותיות, לכן אין מסלול מילים עם פחות מ־4 מילים, ולמסלול lead, load, goad, gold יש בדיוק 4 מילים. גם lend ו־lewd שונות באות אחת מ־lead, אבל אף אחת מהן לא מובילה למקום חדש, ואל bold אפשר להגיע רק מ־gold עצמו.

lock icon+14 בדיקות נסתרות בשליחה

challenge icon

שאלת המשך

האם תוכל להחזיר סולם מילים קצר ביותר אחד, עם המילים לפי הסדר, ולא רק את אורכו?

איפוס הקוד
def ladderLength(beginWord, endWord, wordList):
    # כתבו כאן קוד
מקרי בדיקה

מקרה 1

מקרה 2

מקרה 3

קלט

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

צפוי

4