Алгоритм сокращения URL-адресов сайтов очень прост:
- Сохраните URL-адрес и сопоставьте его с порядковым номером.
- Преобразовать порядковый номер (id) в строку фиксированной длины.
Использование только шести строчных букв для второго шага даст вам гораздо больше (24 ^ 6) комбинаций, которые нужны текущему приложению, и ничто не мешает использовать большую последовательность в некоторый момент времени. Вы можете использовать более короткие последовательности, если разрешите вводить цифры и / или заглавные буквы.
Алгоритм преобразования - это базовое преобразование (например, при преобразовании в шестнадцатеричное), заполнение любым символом, представляющим ноль. Вот код Python для преобразования:
LOWER = [chr(x + ord('a')) for x in range(25)]
DIGITS = [chr(x + ord('0')) for x in range(10)]
MAP = DIGITS + LOWER
def i2text(i, l):
n = len(MAP)
result = ''
while i != 0:
c = i % n
result += MAP[c]
i //= n
padding = MAP[0]*l
return (padding+result)[-l:]
print i2text(0,4)
print i2text(1,4)
print i2text(12,4)
print i2text(36,4)
print i2text(400000,4)
print i2text(1600000,4)
Результаты:
0000
0001
000c
0011
kib9
4b21
Ваши URL будут иметь вид http://mydomain.com/myapp/short/kib9.