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

标签 algorithm sorting lexicographic lexicographic-ordering

<分区>

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

假设我要生成一个长度为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 链接后面的解决方案。

关于algorithm - 按字典顺序按升序创建字符串列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45795743/

相关文章:

algorithm - 检查 10 亿个手机号码是否重复

algorithm - 无法理解寻找最长回文子串的解决方案之一

string - 是否有任何流行和/或有效的递归查找和替换算法?

基于第一列合并行的 Python 脚本

javascript - 使用第一个字符中标点符号的自定义排序对 JavaScript 字符串数组进行排序

algorithm - 用循环表示的对数复杂度?

java - 查找两种数据类型的第 n 个最接近的对象

algorithm - 字典顺序排列如何在算法上工作?

python - 忽略大小写的字符串排序列表

Java - 按字典顺序查找下一个单词