Преобразовать строку в число для сравнения - PullRequest
0 голосов
/ 02 июля 2011

Мне нужна ваша помощь с небольшой проблемой.

Есть ли возможность (в Java или абстрактном решении) преобразовать произвольную строку в целое число со свойством, что алфавитный порядок также работает с целым числом?

Пример: Дом <Дерево <Зоопарк в алфавитном порядке. </p>

Я хотел бы преобразовать эти строки в целое число, чтобы упорядочение также было доступно. Важно то, что конкретные струны не известны раньше. Это означает, что это должно быть уникальное преобразование.

Я надеюсь, что кто-то может мне помочь.

С уважением, Michael

1 Ответ

2 голосов
/ 02 июля 2011

Нет, это невозможно. Допустим, у вас есть две строки, которые представляют 1 и 2. Вы всегда можете создать другую строку, которая бы помещалась между ними в алфавитном порядке, например,

aa  = 1
ab  = 2
aaa = ???

Если вы знаете, что строки, с которыми вы имеете дело, имеют максимальную длину, то это возможно. Например, предположим, что ваша строка имеет длину <= 3. Возьмем строку abc и преобразуем каждую букву в число, где A = 1, B = 2, ..., Z = 26. Если строка меньше 3 символов долго, заполните пробелы в конце нулями. Тогда значение: </p>

(a * 27 * 27) + (b * 27) + c

Тогда:

aa  = 756
ab  = 783
aaa = 757
...