题目描述
给定一个非空字符串 s 和一个包含非空单词的列表 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。
说明:
- 拆分时可以重复使用字典中的单词。
- 你可以假设字典中没有重复的单词。
示例
题解
动态规划。使用一个Boolean数组,tmp[i]表示字符串s的[0, i]是否可以拆分。
初始数据
动态规划方程
if (tmp[j] && wordDict.contains(s.substring(j, i))) {
tmp[i] = true;
break;
}
代码
class Solution {
public boolean wordBreak(String s, List<String> wordDict) {
int len = s.length();
//注意这里数组初始化大小
boolean[] tmp = new boolean[len + 1];
tmp[0] = true;
for (int i = 1; i < len + 1; i++) {
for (int j = 0; j < i; j++) {
if (tmp[j] && wordDict.contains(s.substring(j, i))) {
tmp[i] = true;
break;
}
}
}
return tmp[len];
}
}