2

我想生成一个算法,我想在其中按字典顺序获取下一个字符串。

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

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

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

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

这种类型的算法有最大限制。但我不想要这种类型的限制。它可能是 10000 或 100 万。

要求

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

谢谢

4

1 回答 1

0

使用 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,兹,100,101

如果您首先想要字母或想要任何特定顺序或额外字符,请使用 Matt Timmermans 链接后面的解决方案。

于 2017-08-21T18:06:06.080 回答