Menu
CoddyTech

Word Break

נתונה לך מחרוזת s ורשימת מילים wordDict. החזר true אם אפשר לחתוך את s לחלקים כך שכל חלק יהיה מילה מתוך wordDict, ואחרת החזר false.

החלקים שומרים על הסדר שלהם, וביחד משתמשים בכל אות של s בדיוק פעם אחת. אפשר להשתמש במילה כל מספר פעמים, ואין צורך להשתמש בכל המילים.

פונקציה

wordBreak(s: string, wordDict: string-array) → boolean
sstring
המחרוזת שיש לחלק למילים
wordDictstring-array
המילים שבהן מותר לך להשתמש, כל אחת כמה פעמים שתרצה
מחזירהboolean
אמת אם ניתן לפצל את s למילים מהמילון, אחרת שקר

אילוצים

  • 1 ≤ s.length ≤ 300
  • 1 ≤ wordDict.length ≤ 1000
  • 1 ≤ wordDict[i].length ≤ 20
  • s וגם כל מילה מורכבת מאותיות אנגליות קטנות בלבד.
  • המילים בתוך wordDict שונות זו מזו.

דוגמאות

קלט
s = "sunflowerseed"wordDict = ["sun", "flow", "flower", "seed"]
פלט
true
הסבר
חלקו אותה ל־sun, flower, seed. בחירה ב־flow אחרי sun לא תוביל לשום מקום, מכיוון שאין מילה שמתחילה ב־er שנותר, ולכן המילה הראשונה שמתאימה אינה תמיד המילה הנכונה.

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

challenge icon

שאלת המשך

החזר את מספר המילים הקטן ביותר שחתך תקף יכול להשתמש בהן, או -1 אם אי אפשר לחתוך את s. מה משתנה בטבלה, והאם זמן הריצה משתנה?

איפוס הקוד
def wordBreak(s, wordDict):
    # כתבו כאן את הקוד
מקרי בדיקה

מקרה 1

מקרה 2

מקרה 3

קלט

s = "sunflowerseed"
wordDict = ["sun", "flow", "flower", "seed"]

צפוי

true