Leetcode 139 单词拆分

  JAVA DP:

复制代码
public final boolean wordBreak(String s, List<String> wordDict) {
        Set<String> set = new HashSet<String>();
        for (String word : wordDict) set.add(word);
        return search(s, set, new HashMap<String, Boolean>());
    }

    private final boolean search(String s, Set<String> wordDict, Map<String, Boolean> cache) {
        if (cache.keySet().contains(s)) return cache.get(s);
        int len = s.length();
        boolean res = false;
        for (int i = 0; i <= len; i++) {
            String pre = s.substring(0, i);
            if (!wordDict.contains(pre)) continue;
            if (search(s.substring(i, len), wordDict, cache) || i == len) {
                res = true;
                break;
            }
        }
        cache.put(s, res);
        return res;
    }
复制代码

  JS DP:

复制代码
/**
 * @param {string} s
 * @param {string[]} wordDict
 * @return {boolean}
 */
var wordBreak = function (s, wordDict) {
    let wordDictSet = new Set();
    for (let i = 0; i < wordDict.length; i++) wordDictSet.add(wordDict[i]);
    return search(s, wordDictSet, new Map());
};

var search = function (s, wordDict, cache) {
    if (cache.get(s) !== undefined) return cache.get(s);
    let len = s.length, res = false;
    for (let i = 0; i <= len; i++) {
        let pre = s.substring(0, i);
        if (!wordDict.has(pre)) continue
        if (search(s.substring(i, len), wordDict, cache) || i == len) {
            res = true;
            break;
        }
    }
    cache.set(s, res);
    return res;
}
复制代码

posted @   牛有肉  阅读(68)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
历史上的今天:
2020-07-13 Leetcode 129 求根到叶子节点数字之和 DFS优化
2020-07-13 Leetcode 125 验证回文串 双指针
2020-07-13 Leetcode 08.02 迷路的机器人 缓存加回溯
2020-07-13 Leetcode 38 外观数列
2020-07-13 Leetcode 801 使序列递增的最小交换次数
点击右上角即可分享
微信分享提示