免费网站为何收录比较慢,你们网站做301,爱站网 关键词挖掘工具站长工具,内容营销的方法139. 单词拆分。
给你一个字符串 s 和一个字符串列表 wordDict 作为字典。请你判断是否可以利用字典中出现的单词拼接出 s 。
注意#xff1a;不要求字典中出现的单词全部都使用#xff0c;并且字典中的单词可以重复使用。
示例 1#xff1a;
输入: s leetcode不要求字典中出现的单词全部都使用并且字典中的单词可以重复使用。
示例 1
输入: s leetcode, wordDict [leet, code]
输出: true
解释: 返回 true 因为 leetcode 可以由 leet 和 code 拼接成。示例 2
输入: s applepenapple, wordDict [apple, pen]
输出: true
解释: 返回 true 因为 applepenapple 可以由 apple pen apple 拼接成。注意你可以重复使用字典中的单词。示例 3
输入: s catsandog, wordDict [cats, dog, sand, and, cat]
输出: false提示
1 s.length 300
1 wordDict.length 1000
1 wordDict[i].length 20
s 和 wordDict[i] 仅由小写英文字母组成
wordDict 中的所有字符串 互不相同算法分析
解题思路
1、将wordDict链表中所有的元素放进set中便于查询2、如图所示
class Solution {public boolean wordBreak(String s, ListString wordDict) {SetString set new HashSet(wordDict);boolean[] dp new boolean[s.length() 10];dp[0] true;for (int i 1; i s.length(); i) {for (int j 0; j i; j ) {if (dp[j] set.contains(s.substring(j, i))) {dp[i] true;break;}}}return dp[s.length()];}
}复杂性分析
时间复杂度O(n2) 空间复杂度O(n)