Создайте два параллельных массива (A и B), каждый достаточно большой, чтобы вместить весь набор символов.Просмотрите все значения в A и замените каждое значение на toUpper(value)
.Затем пройдитесь по B, и везде, где A будет отличаться, замените B [A [value]] на B [value] (т. Е. Везде, где toUpper
заменил значение на заглавную версию, замените заглавную версию в B настрочная версия, из которой он был преобразован).Как только вы закончите, toLower
просто вернет B[value]
(и A можно отбросить).
Это предполагает, что вы имеете дело с прописными / строчными буквами, которые образуют биекцию (которую, я должен добавить, это не всегда так, но я считаю, что предположение подразумевается в вопросе).