👣 Задача: найдите первый неповторяющийся символ в строке, выполнив только один обход



Для заданной строки найдите в ней первый неповторяющийся символ, выполнив только один ее обход.



Например,



Input:



string is ABCDBAGHC



Output:




первый неповторяющийся символ: D



Простым решением было бы сохранить количество каждого символа в map или массиве, пройдя его один раз.



Затем еще раз просмотреть строку, чтобы найти первый символ, имеющий значение 1. Временная сложность этого решения равна O(n), где n длина входной строки. Проблема с этим решением заключается в том, что строка проходится дважды, что нарушает ограничения программы.



Мы можем решить эту задачу за один обход строки. Идея состоит в том, чтобы использовать map для хранения количества каждого отдельного символа и индекса его первого или последнего вхождения в строку. Затем пройтись по map и найти символ с минимальным индексом строки.



👉 Пишите ваше решение в комментариях👇



@golang_interview