查找所有字符串拆分组合

Moh*_*ANI 5 python arrays string recursion

我正在寻找一种方法来从一个句子中获取所有字符串拆分组合。例如,对于输入句子:

“我在吃披萨”

我想得到这个输出:

[["I", "am", "eating", "pizza"],
["I", "am eating", "pizza"],
["I", "am", "eating pizza"],
["I", "am eating pizza"],
["I am", "eating", "pizza"],
["I am", "eating pizza"],
["I am eating", "pizza"],
["I am eating pizza"]]
Run Code Online (Sandbox Code Playgroud)

我找不到这样做的递归方式!你有什么主意吗 ?这不是重复的:我不是在寻找整个组合,只寻找订购的项目,而且总是整个单词。从所谓的重复中找不到我的答案。

Tha*_*you 2

细分和重复

\n\n

这是一种使用递归函数 \xe2\x80\x93 来完成此操作的方法以及我如何进行设计:

\n\n
    \n
  • s使用索引扫描字符串i
  • \n
  • 如果索引越界,则返回基本结果,[[s]]否则...
  • \n
  • 如果" "在索引处找到a,则将问题细分为AB两部分并合并它们的结果,否则前进到下一个索引。
  • \n
  • A 部分:在此空间上分割,在递归结果中的每个项目前面添加单词。
  • \n
  • B 部分:不要此空间上拆分,前进到下一个索引
  • \n
\n\n\n\n
# split :: String -> [[String]]\ndef split (s, i = 0):\n  if len(s) == i:\n    return [[s]]\n  elif s[i] == " ":\n           # Part A                                     # Part B\n    return [[s[0:i]] + acc for acc in split(s[i + 1:])] + split(s, i + 1)\n  else:\n    return split(s, i + 1)\n\nprint(split("i am eating pizza"))\n\n# [ [\'i\', \'am\', \'eating\', \'pizza\'], \n# , [\'i\', \'am\', \'eating pizza\']\n# , [\'i\', \'am eating\', \'pizza\']\n# , [\'i\', \'am eating pizza\']\n# , [\'i am\', \'eating\', \'pizza\']\n# , [\'i am\', \'eating pizza\']\n# , [\'i am eating\', \'pizza\']\n# , [\'i am eating pizza\']\n# ]\n
Run Code Online (Sandbox Code Playgroud)\n