我最近遇到了一个显然很简单的问题,但事实证明这让我无法入睡2天。
问题在于:
变量将包含多个字符 - >假设$ i = 5。您需要打印从$ i = 2到$ i = 5的每个可能的字母组合。
$ i = 5的输出需要是: 的 AA AB AC ... Z Z AAA AAB ... ZZZ AAAA AAAB .... ZZZZ AAAAA ..... ZZZZZ
您需要使用仅用于循环或 foreach 或 while循环来实现此功能(不使用任何功能)并打印输出对于形成的每个字符串而不是保存在数组中。 请不要在for循环内部使用for循环,因为$ i可以是100或200。
您可以从'a'到'z'获取一系列字母表。有人可以帮我解决一个简单优雅的解决方案吗?
答案 0 :(得分:1)
在循环之前,你有一个数组aa
。在循环中查看数组。
如果数组是所有z
的序列,则将所有a
的序列替换为内容,其长度增加1.如果新数组的长度大于最大值,则退出循环
否则请查看数组的尾部,它始终采用Xz*
形式,其中X
是除z
之外的任何字母,后跟零个或多个字母{{1} }。将数组的尾部替换为z
,其中Ya*
是Y
后面的字母,即。 Y = X + 1,X
是字母a*
的序列,其长度与原始字母序列a
完全相同(请记住长度可以为零)。
在任何情况下都要写入数组的新内容以输出并重复循环。
你只需要两个循环。外部是在每次迭代中打印新值的主循环。 Inner是将所有z
转换为z
的循环。