此题用DFS和DP其实都能做,但跑下来DFS会快得多。
DFS的想法也很直观,就是尝试将单词拆分,遍历所有可能的切断点。一旦拆分出单词的前面部分亦是一个单词,就递归探索后面部分。唯一的注意点就是要求单词必须能拆分成两部分,所以递归的时候带一个计数器,只有第二次调用DFS并成功探索完毕的情况下,认为是合法的结果。
一个稍微改进速度的技巧是,先将所以单词按照长度大小排序。每处理和判断完一个单词,再将其加入集合中,供后续检测更长的单词时来查找。
Name | Name | Last commit date | ||
---|---|---|---|---|
parent directory.. | ||||
此题用DFS和DP其实都能做,但跑下来DFS会快得多。
DFS的想法也很直观,就是尝试将单词拆分,遍历所有可能的切断点。一旦拆分出单词的前面部分亦是一个单词,就递归探索后面部分。唯一的注意点就是要求单词必须能拆分成两部分,所以递归的时候带一个计数器,只有第二次调用DFS并成功探索完毕的情况下,认为是合法的结果。
一个稍微改进速度的技巧是,先将所以单词按照长度大小排序。每处理和判断完一个单词,再将其加入集合中,供后续检测更长的单词时来查找。