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