Длина самой длинной подстроки, состоящей только из гласных букв в порядке невозрастания
Опубликовано: 22 Сентября, 2022
Для заданной строки S размера N , состоящей из строчных букв, задача состоит в том, чтобы вывести длину самой длинной подстроки, состоящей только из гласных, отсортированных в порядке невозрастания.
Примеры:
Input: S = “ueiaoaeiouuoiea”
Output: 6
Explanation: The only substring which consists only of vowels in non-increasing order, is the substring {S[9], S[15]}, which is “uuoiea”.Input: S = “uuuioea”
Output: 0
Подход: Данную проблему можно решить с помощью HashSet. Выполните следующие шаги, чтобы решить проблему:
- Сохраните все гласные в массиве, скажем, ch[] , в порядке убывания.
- Инициализируйте три переменные res, j и count как 0 , чтобы сохранить самую длинную длину требуемой подстроки, перебрать все гласные и сохранить длину текущей подстроки, удовлетворяющей условиям соответственно.
- Кроме того, инициализируйте HashSet, скажем, mp для хранения всех уникальных символов текущей подстроки, удовлетворяющих условиям.
- Перебрать символы строки S , используя переменную i , и выполнить следующие операции:
- Если S[i] равно ch[j] , добавьте S[i] к mp , а затем увеличьте j и подсчитайте на 1 . Если размер mp равен 5 , то обновить res до максимального значения res и count .
- В противном случае, если j + 1 меньше 5 и S[i] равно ch[j + 1] , тогда увеличьте j и count на 1 и добавьте S[i] к mp . Если размер mp равен 5 , то обновить res до максимального значения res и count .
- В противном случае, если S[i] равно ' u ', тогда присвойте 0 j и 1 счетчику и добавьте S[i] к mp . В противном случае присвойте 0 как j , так и count .
- После выполнения вышеуказанных шагов выведите в качестве результата значение res .
Ниже приведена реализация вышеуказанного подхода:
Временная сложность: O(N)
Вспомогательное пространство: O(N)