需要生成字母数字序列的算法指针。要求如下。
只能使用0-9,A-Z和a-z字符。最初序列将仅以一个字符开始,当序列耗尽时,它将转到两个字符,类似地,当前一个序列用尽时,序列将递增。
序列的例子如下:
一个字符序列
0 1 2 .. 9 A B .. Z a b .. z
现在一个字符序列已经用完了。然后将开始一个2位数的系列。
00 01 02 .. 09 0A 0B .. 0Z 0a 0b .. 0z 10 11 .. 19 1A .. 1Z 1a 1b .. ZZ
在两个角色系列已经用尽之后,将开始3个角色系列,如下所示
000 ... zzz
系列将会产生,直到12个角色系列已经用尽。
有人可以帮我指点一些链接或建议我这样做的机制吗?
我想在PHP中这样做。
由于
答案 0 :(得分:1)
的Python:
digits="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
def NthStr(n):
str=digits[n%len(digits)];
while n>=len(digits):
n=(n/len(digits) - 1)
str=digits[n%len(digits)]+str
return str
尝试(使用较少的数字,以便您可以看到模式):https://ideone.com/rZEV1m
我想这可以很容易地转换成PHP
答案 1 :(得分:1)
下面给出了Matt的python代码的PHP实现。
以下字符已从实施中删除 0,O,O,1,I,I
<?php
function GenerateShortCodes($n)
{
$alphabet=array('A','B','C','D','E','F','G','H','J','K','L','M','N','P','Q','R','S','T','U','V','W','X','Y','Z','a','b','c','d','e','f','g','h','j','k','m','n','o','p','q','r','s','t','u','v','w','x','y','z','2','3','4','5','6','7','8','9');
$len=56;
$ns=$alphabet[$n%$len];
while ($n>=$len)
{
$n=($n/$len-1);
$ns=$alphabet[$n%$len].$ns;
}
return $ns;
}
$startval=0;
for( $i = $startval; $i<$startval+10000; $i++ )
{
echo GenerateShortCodes($i);
echo '</br>';
}
?>