Я решаю проблему в HackerRank, в которой мне нужно посчитать количество букв 'a'
в первых n
элементах бесконечной строки повторяющихся последовательностей, например "abc"
для "abcabcabcabc..."
.
Я реализовал следующую функцию, используя списочные выражения:
repeatedString s n = length $ [x | x <- take (fromInteger n) (cycle s), x == 'a']
Где s
- это повторяющаяся последовательность, а n
- это количество элементов, извлекаемых из бесконечной строки.
Но HackerRank жалуется на то, что некоторые тесты не были выполнены в установленные сроки.
Вопросы:
- Какие здесь узкие места?
- Как я могу определить их для подобных случаев?
- Можете ли вы указать на более эффективный способ сделать это?
Заранее большое спасибо!
РЕДАКТИРОВАТЬ: уточненные параметры функции.