php 生成固定长度数组,php – 如何有效地生成给定长度字母的所有可能字母组合的数组?...

想象一下,我有一袋26个拼字砖 – 英文字母中每个字母一个.

我的目标是创建一个包含最多n个字母的所有可能字符串的数组.说n = 3.

约束:

>字母必须始终按字母顺序排列(ABC,而不是CBA;组合,而不是排列)

>字符串必须< = n个字母长(允许算法突破给定长度的任何循环)

>信件不得重复(A,不是AA)

如何在PHP中最有效地生成此数组?

换句话说,如何避免暴力循环通过所有可能的组合并过滤掉那些与上述规则不匹配的组合?

如果我的字母只包含3个字母 – $alphabet = range(‘a’,’c’); – 我希望输出7个项目(3C1 3C2 3C3):[A,B,C,AB,AC,BC,ABC].

如果我的字母只包含4个字母 – $alphabet = range(‘a’,’d’); – 我期望输出15个项目(4C1 4C2 4C3 4C4):[A,B,C,D,AB,AC,AD,BC,BD,CD,ABC,ABD,ACD,BCD,ABCD] .但是如果我想限制只有字符串< = 3个字母长,那么我会忽略ABCD,只产生14个项目(4C1 4C2 4C3).

$alphabet = range('a','z');

print_r(generate_strings($alphabet,1));

// expected output: A,B,C,...Z

print_r(generate_strings($alphabet,2));

// expected output: A..Z, AB..AZ, BC..BZ, CD, ..YZ

print_r(generate_strings($alphabet,3));

// expected output: A..Z, AB..YZ, ABC..XYZ

print_r(generate_strings($alphabet,10));

// expected output: A .. JKLMN .. AGKQRZ .. QRSTUVWXYZ

// ^ ^ ^10 character max, no repeats

// | still alphabetical order

// alphabetical order

function generate_strings($alphabet,$max_word_length) {

// how can I efficiently generate this array

// without brute force looping through all of

// the invalid and duplicate items like AA and CBA?

return $array_of_all_possible_strings;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值