我想生成一个算法,我想在其中按字典顺序获取下一个字符串。
假设我要生成一个长度为26的list那么就是
['a','b'....'z']
现在假设我要生成一个长度为260的列表那么它是
['a0','a1','a2'...'a9','b1'....'z0'....'z9']
这种算法有最大限制。但我不想要这种类型的限制。可能是 10000 或 100 万。
要求
算法应该以这样一种方式工作,即以前的字符串作为它生成的参数传递。它应该按字典顺序生成下一个字符串。而且我不想使用时间戳 (1503314045645)
谢谢
使用 base 36 格式的整数怎么样?
在 Java 中看起来像这样:
String next(String prev) {
if(prev==null) {
return "0";
}
return Integer.toString(Integer.parseInt(prev, 36), 36);
}
实际上,如果您使用一个简单的整数来存储值,并在每次需要下一个值时简单地增加它,并使用基数 36 将整数格式化为字符串,则效果会更好:
Integer.toString(++value, 36);
在此解决方案中,数字在输出中位于字母之前,因此您将获得以下标记:
a7,a8,a9,aa,ab, ... ax,ay,az,b0,b1 ... zx,zy,zz,100,101
如果您想要字母优先或想要任何特定顺序或额外字符,请使用 Matt Timmermans 链接后面的解决方案。