Given a string s and a dictionary of strings wordDict, return true if s can be segmented into a space-separated sequence of one or more dictionary words.
Note that the same word in the dictionary may be reused multiple times in the segmentation.
Example 1:
Input: s = "leetcode", wordDict = ["leet","code"]
Output: true
Explanation: Return true because "leetcode" can be segmented as "leet code".
Example 2:
Input: s = "applepenapple", wordDict = ["apple","pen"]
Output: true
Explanation: Return true because "applepenapple" can be segmented as "apple pen apple".
Note that you are allowed to reuse a dictionary word.
Example 3:
Input: s = "catsandog", wordDict = ["cats","dog","sand","and","cat"]
Output: false
Pseudocode
- don't undertand code or how solution was thought out.
- need to review
Solution
// from solutions/** * @param{string} s * @param{string[]} wordDict * @return{boolean} */varwordBreak=function (s, wordDict) {constwords=newSet(wordDict);conststarts=newSet([0]);for (conststartof starts) {for (constwordof words) {constend= start +word.length;// we are slicing the word from s and check if that sliced word is exist in wordDict// it could be the current word or it could be the other word which has same length of current word// either way, we admit that the current starting index to the index of word length exist// so now we want to add the next starting index which is 'end'// we repeat this process until the last index of s// if we reached to last index of s, that means that we checked that every sliced word exist in wordDict// until the last index of s// this will conclude that the s has every word from wordDictif (words.has(s.slice(start, end))) starts.add(end); } }returnstarts.has(s.length);};// what if we add the same length of index again and again?// it will repeat the same starting index next time again and again.// To prevent the repetition, we used a Set() so that even after we add the new start index// it will not loop again unless if we never been to that starting index