Сортировка символов в строке с использованием выбранного вами алгоритма (например, встроенной функции qsort
), затем проверка строки на наличие последовательных повторяющихся букв;если вы дошли до конца, не найдя ни одного, строка содержит все уникальные символы.
Альтернативой может быть использование некоторой структуры, имеющей один сегмент для каждого символа, который может содержать строка, причем все инициализируются нулем;Вы сканируете строку, увеличивая значение корзины, соответствующее текущему символу.Если вы увеличиваете интервал, в котором уже есть 1, вы уверены, что ваша строка содержит дубликаты.
Это может нормально работать с char
s и массивом (размером UCHAR_MAX+1
), ноэто быстро выходит из-под контроля, когда вы начинаете иметь дело с широкими символами.В таком случае вам понадобится хеш-таблица или какой-то другой «серьезный» контейнер.
Лучший алгоритм зависит от длины проверяемых строк, размера каждого символа, скорости алгоритма сортировки и стоимости.распределения / использования структуры для хранения частот символов.