К списку задач
Легко Решено: 0 Процент решений: 0%

Первый уникальный символ

Найдите первый символ, который встречается только один раз.

Чему вы научитесь

  • Считать символы словарём
  • Вторым проходом находить первый уникальный
  • Решать за линейное время

Условие

Верните индекс первого символа в text, который встречается ровно один раз. Учитывается регистр.

Реализуйте функцию first_unique_index(text).

Входные данные

text: Текст для анализа.

Выходные данные

Верните индекс, либо -1, если каждый символ повторяется.

Ограничения

0 ≤ длина ≤ 100 000

Примеры

Пример 1
Ввод:
text = "swiss"

Ожидаемый вывод:
expected = 1
Ввод:
std::string text = "swiss";

Ожидаемый вывод:
long long expected = 1;
Ввод:
string text = "swiss";

Ожидаемый вывод:
long expected = 1;

Пояснение

s повторяется, w встречается один раз на индексе 1.

Пример 2
Ввод:
text = "aabb"

Ожидаемый вывод:
expected = -1
Ввод:
std::string text = "aabb";

Ожидаемый вывод:
long long expected = -1;
Ввод:
string text = "aabb";

Ожидаемый вывод:
long expected = -1;

Пояснение

Каждый символ повторяется: -1.

Как подступиться

Сначала попробуйте сами, затем открывайте подсказки по одной.

Подсказка 1

Нужны символы, которые встречаются ровно один раз, а не просто первый отличный символ.

Подсказка 2

Сначала посчитайте частоты всех символов, затем найдите самую раннюю позицию с частотой один.

Подсказка 3

Помните, что заглавные и строчные буквы — это разные символы.

Ожидаемая сложность

время O(n), доп. память O(k)

Ссылки

Это задание адаптировано для CodeUtility. Следуйте условию и ограничениям выше.

Учитесь у других

Решения сообщества

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