动态规划 · 拆分词句

拆分词句

http://www.nowcoder.com/questionTerminal/5f3b7bf611764c8ba7868f3ed40d6b2c

import java.util.HashSet;
import java.util.Set;

public class Solution {
    public boolean wordBreak(String s, Set<String> dict) {
        if (s == null || s.length() == 0) return false;
        // dp[n] 代表着 :字符串前 N 个字符能否被 Dict 拆分
        boolean[] dp = new boolean[s.length() + 1];
        // 空集可以被 dict 拆分
        dp[0] = true;
        for (int i = 1; i <= s.length(); i++) {
            // 确保前 0 - i- 1之间每种方案都可以被拆分
            for (int j = i - 1; j >= 0; j--) {
                if (dp[j] && dict.contains(s.substring(j, i))) {
                    dp[i] = true;
                    break;
                }
            }
        }
        return dp[s.length()];
    }
}
全部评论

相关推荐

面试了几家,全程问项目,八股一点都不问,可惜准备了这么久
独角仙梦境:现在感觉问八股像是中场休息一样的,问几个八股放松一下再上强度
点赞 评论 收藏
分享
代码飞升:别用口语,后端就写后端,前端就写前端,最后别光后悔
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务