Модульное сравнение символов

Это кажется очень простым вопросом, но в Интернете на удивление мало написано об этом, и мне трудно реализовать его самостоятельно. Как лучше всего реализовать модульную функцию сравнения для символов ASCII в Java, чтобы сравнение «охватывало» конец алфавита? Я хочу использовать его для функции «между», которая может разбивать весь алфавит в произвольных местах и ​​правильно возвращать «истину», когда спрашивают, находится ли «y» между «x» и «b».

Я уже нашел все вопросы и ответы, в которых говорится о модульной арифметике над символами, поэтому я знаю, как выполнять модульное сложение (сдвиг символа )с таким кодом:

char shifted = (((original - 'a') + 1) % 26) + 'a';

Однако это основано на встроенных в Java модульных арифметических функциях,которые не имеют аналогов для сравнения. Даже если бы я использовал простые целые числа, у меня не было бы возможности спросить Java, если a < b < c mod 26 (, что должно вернуть true, если a = 24, b = 25 и c = 1 ).

Итак, общий вопрос заключается в том, как лучше всего реализовать модульные операции сравнения в Java? Если это слишком сложная проблема, есть ли хотя бы способ заставить такие сравнения работать для алфавита ASCII?

5
задан Edward 8 July 2012 в 20:28
поделиться