# 单词拆分

<p>给定一个<strong>非空</strong>字符串 <em>s</em> 和一个包含<strong>非空</strong>单词的列表 <em>wordDict</em>，判定&nbsp;<em>s</em> 是否可以被空格拆分为一个或多个在字典中出现的单词。</p>

<p><strong>说明：</strong></p>

<ul>
	<li>拆分时可以重复使用字典中的单词。</li>
	<li>你可以假设字典中没有重复的单词。</li>
</ul>

<p><strong>示例 1：</strong></p>

<pre><strong>输入:</strong> s = &quot;leetcode&quot;, wordDict = [&quot;leet&quot;, &quot;code&quot;]
<strong>输出:</strong> true
<strong>解释:</strong> 返回 true 因为 &quot;leetcode&quot; 可以被拆分成 &quot;leet code&quot;。
</pre>

<p><strong>示例 2：</strong></p>

<pre><strong>输入:</strong> s = &quot;applepenapple&quot;, wordDict = [&quot;apple&quot;, &quot;pen&quot;]
<strong>输出:</strong> true
<strong>解释:</strong> 返回 true 因为 <code>&quot;</code>applepenapple<code>&quot;</code> 可以被拆分成 <code>&quot;</code>apple pen apple<code>&quot;</code>。
&nbsp;    注意你可以重复使用字典中的单词。
</pre>

<p><strong>示例 3：</strong></p>

<pre><strong>输入:</strong> s = &quot;catsandog&quot;, wordDict = [&quot;cats&quot;, &quot;dog&quot;, &quot;sand&quot;, &quot;and&quot;, &quot;cat&quot;]
<strong>输出:</strong> false
</pre>


## template

```java

public class Solution {
	public boolean wordBreak(String s, List<String> wordDict) {
		int length = s.length();
		int size = wordDict.size();
		if (length == 0) {
			return true;
		}
		if (size == 0) {
			return false;
		}

		boolean[] dp = new boolean[length];
		for (int i = 0; i < length; i++) {
			for (int j = 0; j < size; j++) {
				String now = wordDict.get(j);
				if (i < now.length()) {
					String test = s.substring(0, i + 1);
					if (now.equals(test)) {
						dp[i] = true;
						break;
					}
				}
				if (i >= now.length()) {
					String test = s.substring(i - now.length() + 1, i + 1);
					if (dp[i - now.length()] && test.equals(now)) {
						dp[i] = true;
						break;
					}
				}
			}
		}
		return dp[length - 1];
	}
}
```

## 答案

```java

```

## 选项

### A

```java

```

### B

```java

```

### C

```java

```