Создать список строк в порядке возрастания в лексикографическом порядке

Я хочу создать алгоритм, в котором я хочу получить следующую строку в лексикографическом порядке.

Предположим, я хочу создать список длиной 26, тогда это

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

Теперь предположим, что я хочу создать список длиной 260, тогда это

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

Этот тип алгоритма имеет максимальный предел. Но я не хочу такого рода ограничений. Это может быть 10000 или 1 миллион.

требование

Алгоритм должен работать таким образом, чтобы ранее строка передавалась как генерируемый им аргумент. И он должен производить следующую строку в лексикографическом порядке. И я не хочу использовать метку времени (1503314045645)

Спасибо

1 ответ

Как насчет использования целых чисел в формате 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,100101

Если вам нужны буквы в первую очередь или какой-то конкретный порядок или дополнительные символы, используйте решение по ссылке Мэтта Тиммерманса.

Другие вопросы по тегам