2026/1/16 8:32:57
网站建设
项目流程
模块化网站建设系统,浙江住房和建设网站,化妆品电商网站模板,公司设计网站需要包含什么资料题目
给你一个字符串 s 和一个字符串列表 wordDict 作为字典。如果可以利用字典中出现的一个或多个单词拼接出 s 则返回 true。
注意#xff1a;不要求字典中出现的单词全部都使用#xff0c;并且字典中的单词可以重复使用。
示例 1#xff1a; 输入: s “leetcode”, w…题目给你一个字符串 s 和一个字符串列表 wordDict 作为字典。如果可以利用字典中出现的一个或多个单词拼接出 s 则返回 true。注意不要求字典中出现的单词全部都使用并且字典中的单词可以重复使用。示例 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题解classSolution{publicbooleanwordBreak(Strings,ListStringwordDict){intmaxLen0;for(Stringword:wordDict){maxLenMath.max(maxLen,word.length());}SetStringwordsnewHashSet(wordDict);intns.length();boolean[]fnewboolean[n1];f[0]true;for(inti1;in;i){for(intji-1;jMath.max(i-maxLen,0);j--){if(f[j]words.contains(s.substring(j,i))){f[i]true;break;}}}returnf[n];}}解析出自教你一步步思考 DP从记忆化搜索到递推附题单Python/Java/C/Go/JS/RustclassSolution{publicbooleanwordBreak(Strings,ListStringwordDict){// 初始化字典中最长单词的长度为0intmaxLen0;// 遍历字典找出最长单词的长度for(Stringword:wordDict){maxLenMath.max(maxLen,word.length());}// 将字典转为HashSet提升查找效率O(1)平均时间SetStringwordsnewHashSet(wordDict);// 获取输入字符串s的长度intns.length();// 创建动态规划数组ff[i]表示s的前i个字符能否被拆分为字典中的单词boolean[]fnewboolean[n1];// 空字符串视为可拆分作为DP起点f[0]true;// 从1到n遍历每个位置i计算f[i]for(inti1;in;i){// 从i-1向前遍历j但最多只回溯maxLen个字符剪枝优化for(intji-1;jMath.max(i-maxLen,0);j--){// 如果前j个字符可拆分f[j]为true且子串s[j:i]在字典中if(f[j]words.contains(s.substring(j,i))){// 则前i个字符也可拆分f[i]true;// 找到一个有效分割即可提前退出内层循环break;}}}// 返回整个字符串s是否可拆分returnf[n];}}