按字典顺序以升序创建字符串列表

时间:2017-08-21 11:17:24

标签: algorithm sorting lexicographic lexicographic-ordering

我想生成一个算法,我希望以字典顺序获取下一个字符串。

假设我想生成一个长度为26的列表,那么它就是

['a','b'....'z']

现在假设我想生成一个长度为260的列表,然后它就是

['a0','a1','a2'...'a9','b1'....'z0'....'z9']

此类算法具有最大限制。但我不想要这样的限制。它可能是10000或1百万。

要求

算法应该以这样的方式工作,即先前的字符串作为参数生成传递。它应该按字典顺序生成下一个字符串。而且我不想使用时间戳(1503314045645)

谢谢

1 个答案:

答案 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背后的解决方案'链接。