Menu
CoddyTech

Word Break

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

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

פונקציה

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

אילוצים

  • 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, שאף מילה לא מתחילה בו, ולכן המילה הראשונה שמתאימה אינה תמיד הנכונה.
challenge icon

שאלת המשך

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

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

בדיקה #1

בדיקה #2

בדיקה #3

ארגומנטים

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

הפלט הצפוי

true