140 單詞拆分 II

2021-10-10 04:04:14 字數 1002 閱讀 3042

給定乙個非空字串 s 和乙個包含非空單詞列表的字典 worddict,在字串中增加空格來構建乙個句子,使得句子中所有的單詞都在詞典中。返回所有這些可能的句子。

想到了單詞拆分,可以用動態規劃先判斷字串s中每個位置i是否可以拆分為單詞,dp[i]表示[0, i)可以拆分,然後就可以根據dp[i]來解決這個問題。

具體而言,我們可以判斷[i, end)組成的單詞是否存在於字典中,若存在,並且dp[i]為true,就說明存在乙個方案,可以把[i, end)組成的單詞加入到臨時答案陣列tmp中,然後在遞迴地對[0, i)開始判斷處理,遞迴結束條件,當i為0時,證明拆分完畢,可以把臨時答案陣列tmp的結果輸出到最後返回陣列ans中。

class

solution

int n = s.

size()

;//動態規劃判斷能否拆分

vector<

bool

>

dp(n +1,

false);

dp[0]

=true

;for

(int i =

1; i <= n; i++)}

} vector ans;

//可以拆分才開始遞迴

if(dp[n]

)return ans;

}void

dfs(string s, unordered_set

& worddictset,

int n, vector<

bool

>

& dp, vector

& tmp, vector

& ans)

} ans.

push_back

(s1)

;return;}

//從後往前遞迴

for(

int j = n -

1; j >=

0; j--)}

}}};

140 單詞拆分 II

給定乙個非空字串 s 和乙個包含非空單詞列表的字典 worddict,在字串中增加空格來構建乙個句子,使得句子中所有的單詞都在詞典中。返回所有這些可能的句子。說明 分隔時可以重複使用字典中的單詞。你可以假設字典中沒有重複的單詞。示例 1 輸入 s catsanddog worddict cat ca...

140 單詞拆分 II

140.單詞拆分 ii 給定乙個非空字串 s 和乙個包含非空單詞列表的字典 worddict,在字串中增加空格來構建乙個句子,使得句子中所有的單詞都在詞典中。返回所有這些可能的句子。說明 分隔時可以重複使用字典中的單詞。你可以假設字典中沒有重複的單詞。示例 1 輸入 s catsanddog wor...

140 單詞拆分 II

題目描述 給定乙個非空字串 s 和乙個包含非空單詞列表的字典 worddict,在字串中增加空格來構建乙個句子,使得句子中所有的單詞都在詞典中。返回所有這些可能的句子。說明 示例 1 輸入 s catsanddog worddict cat cats and sand dog 輸出 cats and...