leetCode

    xiaoxiao2025-02-27  19

    题意:给定一个单词和一个单词序列,看看这个单词能不能分割成一系列单词,并且分割后的单词都在单词序列当中

    解法:很简单的dp,用s[0...word.length]表示到第几位能否分割。若word.substring(0,i+1)在这个单词里或者s[j]=true并且word.substring(j+1,i+1)在这个单词序列里,则s[i]=true。最后返回的值为s[word.length-1]

    代码如下:

    public class Solution { public boolean wordBreak(String s, Set<String> wordDict) { boolean[] has = new boolean[s.length()]; int i, j, k; for (i = 0; i < s.length(); i++) { if (wordDict.contains(s.substring(0, i + 1))) has[i] = true; for (j = 0; j < i; j++) { if (has[j] == true && wordDict.contains(s.substring(j + 1, i + 1))) has[i] = true; } } return has[s.length() - 1]; } }

    转载请注明原文地址: https://ju.6miu.com/read-1296686.html
    最新回复(0)