В конце дня один буквенно-цифровой символ имеет как минимум 36 возможных значений. Если вы включите пунктуацию, нижний регистр и т. Д., То вы можете легко передать 72 возможных значения.
Не встречающееся число, которое позволяет быстро сравнивать строки, будет обязательно расти экспоненциально с длиной строки.
Таким образом, вы first должны выбрать самую длинную строку, которую вы ожидаете сравнить. Предполагая, что длина N символов, и если вам нужны ТОЛЬКО заглавные буквы и цифры 0-9, вам нужно целочисленное представление, которое может достигать
36 ^ N
Для строки длиной 25 (поле общего имени) вам понадобится двоичное число со 130 битами.
Если вы скомпонуете это в 32-разрядные числа, вам понадобится 4. Затем вы можете сравнить каждое число (четыре сравнения целых чисел не должны занимать время по сравнению с обходом строки). Я бы порекомендовал большую библиотеку чисел, но для этого специализированного случая я уверен, что вы можете написать свою собственную и получить лучшую производительность.
Если вы хотите обработать 72 возможных значения на символ (прописные, строчные, цифры, знаки пунктуации ...) и вам нужно 10 символов, тогда вам потребуется 62 бита - два 32-битных целых числа (или одно 64-битное, если вы Вы находитесь в системе, которая поддерживает 64-битные вычисления)
Если, однако, вы не можете ограничить числа в строке (т. Е. Это может быть любая из 256 букв / цифр / символов / и т. Д.) И не можете определить размер строки, тогда сравниваете прямой путь - единственный путь, но есть быстрый путь.
Приведите указатель строки к 32-битному массиву целых чисел без знака и сравните строку 4 байта за раз (или 64 бита / 8 байт за раз на 64-битном процессоре). Это означает, что для 100-символьной строки требуется только 25 сравнений, чтобы найти большее значение.
Вам может потребоваться переопределить набор символов (и преобразовать строки), чтобы символам с более высоким приоритетом присваивались значения ближе к 0, а значениям с более низким приоритетом ближе к 255 (или наоборот, в зависимости от того, как вы сравнивая их).
Удачи!
-Adam