#5375. 单词拆分

    ID: 5375 传统题 1000ms 256MiB 尝试: 2 已通过: 1 难度: 3 上传者: 标签>动态规划划分dp线性dp普及/提高−

单词拆分

题目描述

给你一个字符串 ss 和一个字符串列表 wordDictwordDict 作为字典。如果可以利用字典中出现的一个或多个单词拼接出 ss 则返回 true\text{true}

注意:不要求字典中出现的单词全部都使用,并且字典中的单词可以重复使用。

输入格式

第一行一个整数 TT1T101 \le T \le 10),表示测试数据组数。

对于每组测试数据:

  • 第一行:一个字符串 ss,仅由小写英文字母组成,长度满足 1s3001 \le |s| \le 300
  • 第二行:一个正整数 nn,表示字典中单词的数量,满足 1n10001 \le n \le 1000
  • 接下来 nn 行:每行一个字符串 wordDictiwordDict_i,仅由小写英文字母组成,长度满足 1wordDicti201 \le |wordDict_i| \le 20,且所有 wordDictiwordDict_i 互不相同。

输出格式

对于每组测试数据,输出一行,为布尔值 true\text{true}false\text{false},表示是否能用字典中的单词拼接出字符串 ss


样例 #1

样例输入 1

3
leetcode
2
leet
code
applepenapple
2
apple
pen
catsandog
5
cats
dog
sand
and
cat

样例输出 1

true
true
false

样例解释 1

  • 第一组数据:leetcode 可以由 leetcode 拼接成,返回 true\text{true}
  • 第二组数据:applepenapple 可以由 applepenapple 拼接成,返回 true\text{true},可重复使用字典单词。
  • 第三组数据:无法用字典中单词拼接出 catsandog,返回 false\text{false}

说明/提示

  • 1T101 \le T \le 10
  • 1s.length3001 \le s.\text{length} \le 300
  • 1wordDict.length10001 \le wordDict.\text{length} \le 1000
  • 1wordDict[i].length201 \le wordDict[i].\text{length} \le 20
  • sswordDict[i]wordDict[i] 仅由小写英文字母组成
  • wordDictwordDict 中的所有字符串互不相同