По заданной строке найдите в ней первый повторяющийся символ. Нам нужно найти символ, который встречается более одного раза и чей индекс второго появления самый маленький. Вариация этого вопроса обсуждается здесь .
Примеры:
Input: ch = “geeksforgeeks”
Output: e
e is the first element that repeatsInput: str = “hello geeks”
Output: l
l is the first element that repeats
Простое решение : решение состоит в том, чтобы запустить два вложенных цикла. Начните движение с левой стороны. Для каждого символа проверьте, повторяется ли он или нет. Если символ повторяется, увеличить количество повторяющихся символов. Когда счет станет K, верните символ.
Сложность времени этого решения O (n 2 )
Мы можем использовать сортировку, чтобы решить проблему за O (n Log n) времени. Ниже приведены подробные шаги.
- Скопируйте данный массив во вспомогательный массив temp [].
- Сортируйте временный массив, используя алгоритм временной сортировки O (N log N).
- Сканирование входного массива слева направо. Для каждого элемента подсчитайте его вхождения в temp [], используя бинарный поиск. Как только мы находим символ, встречающийся более одного раза, мы возвращаем его.
Этот шаг можно выполнить за O (N Log N).
Эффективным решением является использование хеширования для решения этого в среднем за O (N) времени.
- Создайте пустой хеш.
- Просканируйте каждый символ входной строки и вставьте значения в каждую из клавиш в хэше.
- Когда какой-либо символ появляется более одного раза, значение хэш-ключа увеличивается на 1 и возвращает символ.
Ниже приведен пробный запуск вышеуказанного подхода:
Ниже приведена реализация вышеуказанного подхода:
|
Джава
|
питон
|
C #
|
PHP
|
Выход:
e
Аналогичная проблема: поиск первого неповторяющегося символа в строке .
Эта статья предоставлена Афзалом Ансари . Если вы как GeeksforGeeks и хотели бы внести свой вклад, вы также можете написать статью с помощью contribute.geeksforgeeks.org или по почте статьи contribute@geeksforgeeks.org. Смотрите свою статью, появляющуюся на главной странице GeeksforGeeks, и помогите другим вундеркиндам.
Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.
Рекомендуемые посты:
- Найти повторяющийся символ, присутствующий первым в строке
- Эффективно найти первый повторяющийся символ в строке без использования какой-либо дополнительной структуры данных за один проход
- Подсчет вхождений символа в повторяющейся строке
- Найдите строку так, чтобы каждый символ был лексикографически больше, чем его ближайший следующий символ
- Найти первое повторное слово в строке
- Найти символ в первой строке, который присутствует в минимальном индексе во второй строке
- Запросы, чтобы найти последний неповторяющийся символ в подстроке данной строки
- Запросы, чтобы найти первый неповторяющийся символ в подстроке строки
- Повторный персонаж, первое появление которого находится слева
- Найти последний индекс символа в строке
- Найти последний неповторяющийся символ в строке
- Найти один дополнительный символ в строке
- По заданной строке найдите ее первый неповторяющийся символ
- Найти k-й символ расшифрованной строки | Комплект 1
- Найти k-й символ расшифрованной строки | Комплект — 2
0.00 (0%) 0 votes