我有一个字符串,我希望得到所有可能的分组组合,同时保持它们的顺序相同。我想做一些类似于n-gram的方法然后连接结果。
所以,如果我有示例字符串:
aa bb cc dd
我想(没有特别的顺序):
aa | bb cc dd
aa bb | cc dd
aa bb cc | dd
aa | bb cc | dd
aa | bb | cc dd
aa bb | cc | dd
aa | bb | cc | dd
我更喜欢bash或python中的答案。
答案 0 :(得分:3)
这可以通过递归函数来实现:
停止案例是一个空的参数列表 - 因此不会输入while
循环。
否则我们想要:
所以:
#!/bin/bash
combos()
{
head=""
echo $@
while [[ $# -gt 0 ]]; do
head="$head $1"
shift
combos $@ | sed "s/^/$head |/"
done
}
combos aa bb cc dd
这确实有一些不一致的间距,尾随|
和重复一个分组。这些都可以整理 - 我把它留作练习。