Другие языки программирования и технологии

как сравнить элементы массива типа char?

Кирилл Kilar
Кирилл Kilar
241
Есть много способов. В целом, можно сделать проверку за два прохода. Всего лишь как вариант - создаёте вспомогательный массив из 256 элементов и каждому элементу присваивается значение 0.

unsigned char dict[256];

Затем цикл по исходному массиву букв, где каждую букву можно представить как индекс во вспомогательном массиве. В первом проходе используете код буквы как индекс во вспомогательном массиве и делаете инкремент этого элемента. (прибавляете единицу)

В результате этой операции в значение каждого элемента вспомогательного массива будет число букв.
Например, dict['A'] -число заглавных букв А в исходном массиве.

Во втором проходе достаточен простой цикл по вспомогательному массиву. Если значение какого либо элемента больше 1, то повторояющиеся буквы есть и можно прервать цикл.
Если значение элемента во вспомогательном массиве равно единице -то буква только одна, если 0, то такой буквы нет.

Данный алгоритм лучше не пробовать с уникодными символами.

На самом деле мой алгоритм довольно простой и он может дать выигрыш во времени исполнения на больших исходных массивах. В противном случае придётся делать два вложенных цикла, чтобы сравнивать каждый элемент со всеми последующими и прерывать оба цикла, если условие поиска выполнено.
Беркбол Жарылкасын
Беркбол Жарылкасын
2 060
Лучший ответ
Да прямо так и сравнить a < b например
Григорий Цой
Григорий Цой
52 452
короче цикл а в нем присваивание переменной элемента цикл сравнение переменной с элементом если равны и номера элементов не равны то есть одинаковые есть значит и дальше на выбор счетчик или сообщение
нужно сравнивать не буквы, а их код в таблице ASCII.
в паскале это функия ord, в С не знаю
Сергей Блохин
Сергей Блохин
7 338

Похожие вопросы