코테준비 - Word Break II

정상화·2023년 2월 26일

LeetCode

목록 보기
136/222

Word Break II

class Solution {
public:
    vector<string> wordBreak(string s, vector<string>& wordDict) {
        unordered_set<string> wordSet;
        for (auto &word: wordDict) {
            wordSet.insert(word);
        }
        vector<string> sentences;

        splitable(sentences, wordSet, s, 0, "");

        return sentences;
    }

    void splitable(vector<string> &sentences,unordered_set<string> &wordSet,
                   string s, int start, string sentence) {
        for (int cut = start + 1; cut <= s.length(); cut++) {
            string extracted = s.substr(start, cut - start);
            if (wordSet.find(extracted) != wordSet.end()) {
                splitable(sentences, wordSet, s, cut, sentence + extracted + (cut == s.length() ? "" :" "));
            }
        }
        if (start == s.length()) {
            sentences.push_back(sentence);
        }
    }
};
profile
백엔드 희망

0개의 댓글