美文网首页程序员
力扣 139 单词拆分

力扣 139 单词拆分

作者: zhaojinhui | 来源:发表于2020-10-13 04:05 被阅读0次

题意:给定一个单词,和一个字典,判定字典中的单词能否拼接成给定的单词

思路:一维动态规划,详情见注释

思想:动态规划

复杂度:时间O(n^n),空间O(n)

class Solution {
    public boolean wordBreak(String s, List<String> wordDict) {
        int len = s.length();
        // dp[i]为true的含义是从头开始到i-1的字符串,能被字典中的单词拼接出来
        boolean[] dp = new boolean[len+1];
        // 当没有单词时,为可以拼接出来
        dp[0] = true;
        // 把单词放到hashset中方便快速查找
        HashSet<String> set = new HashSet();
        for(String str: wordDict) {
            set.add(str);
        }
        // 从头到尾遍历s
        for(int i=1;i<=len;i++) {
            // 从尾到头遍历当前子字符串0到i-2
            for(int j=i-1;j>=0;j--) {
                String temp = s.substring(j, i);
                // 当前子字符串j到i出现在字典中,而且0到j-1的字符串也能被字典拼接,那么0到i-1的字符串可以被字典拼接成子符串
                if(set.contains(temp) && dp[j]) {
                    dp[i] = true;
                    break;
                }
            }
        }
        // 返回第i-1个字符串能否被拼接
        return dp[len];
    }
}

相关文章

  • LeetCode 139. 单词拆分 | Python

    139. 单词拆分 题目来源:力扣(LeetCode)https://leetcode-cn.com/proble...

  • 力扣 139 单词拆分

    题意:给定一个单词,和一个字典,判定字典中的单词能否拼接成给定的单词 思路:一维动态规划,详情见注释 思想:动态规...

  • 力扣(LeetCode) -139 单词拆分

    本题考察的是动态规划 题目描述 给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,判定 s ...

  • LeetCode-139-单词拆分

    LeetCode-139-单词拆分 139. 单词拆分[https://leetcode-cn.com/probl...

  • 139. 单词拆分

    139. 单词拆分

  • 139单词拆分

    题目描述 给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,判定 s 是否可以被空格拆分为一...

  • 139:单词拆分

    题意 给你一个字符串 s 和一个字符串列表 wordDict 作为字典。请你判断是否可以利用字典中出现的单词拼接出...

  • 力扣 140 单词拆分 II

    题意:给定一个字符串和一个字典,返回可以用字典拼接的所有字符串 思路:用set记录字典的单词,用list arra...

  • 139. 单词拆分

  • 139. 单词拆分

    解法

网友评论

    本文标题:力扣 139 单词拆分

    本文链接:https://www.haomeiwen.com/subject/qoympktx.html