给定一个字符串:“ABCD”,返回带有一个或多个缺少字符的子字符串,保持字符串的顺序。这似乎不是“排列”,但我不确定这个算法是否有名称。我用它来生成一个单词和一个单词中的单词的字符。
示例:
一个 乙 C d
AB 公元前 光盘 AC AD<<缺少BC
ABC BCD ACD ABD
答案 0 :(得分:1)
您正在生成输入字符串的有序power set字符 - 这意味着,您可以从输入字符串中的字符集中获取所有子集,保留初始顺序:
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
是输入集的大小),您可能希望从结果中删除空集和输入集,但基本上这是你正在寻找的算法。对于您想要的任何语言,很容易找到implementations。