给定一个字符串:“ABCD”,返回具有一个或多个缺失字符的子字符串,保持字符串的顺序。这似乎不是“排列”,但我不确定这个算法是否有名字。我正在使用它来生成单词和单词中单词的字谜。
例子:
A B C D
AB BC CD AC AD << 缺少 BC
ABC BCD ACD ABD
给定一个字符串:“ABCD”,返回具有一个或多个缺失字符的子字符串,保持字符串的顺序。这似乎不是“排列”,但我不确定这个算法是否有名字。我正在使用它来生成单词和单词中单词的字谜。
例子:
A B C D
AB BC CD AC AD << 缺少 BC
ABC BCD ACD ABD
您正在生成输入字符串字符的有序幂集- 意思是,您可以从输入字符串中的字符集中获得的所有子集,保留初始顺序:
input = { A, B, C, D }
output = { {}, {A}, {B}, {C}, {D}, {A, B}, {B, C} {C, D}, {A, C}, {A, D},
{B, D}, {A, B, C}, {A, B, D}, {A, C, D}, {B, C, D}, {A, B, C, D} }
结果集包含2^n
元素(具有n
输入集的大小),您可能希望从结果中删除空集和输入集,但基本上这是您正在寻找的算法。很容易找到任何你想要的语言的实现。