Когато работите с низове, понякога може да се наложи да намерите максималния брой повторения на конкретна дума в изречение. В тази публикация в блога ще разгледаме просто и ефективно решение на JavaScript и Python за решаване на този проблем. Нека се потопим!
Постановка на проблема
Дадено е изречение a и дума b, искаме да намерим максималния брой пъти, когато думата b се повтаря в a. Повтарящите се думи трябва да бъдат свързани и поставени една до друга.
Подход към решението
За да разрешим този проблем, можем да използваме подход на плъзгащ се прозорец. Ще преминем през изречението и ще проверим всеки подниз с дължина b.length, за да видим дали съвпада с дадената дума b. Ако това стане, ще увеличим броя на текущата последователност от повтарящи се думи. Ако текущият брой надвишава максималния брой, наблюдаван досега, ще актуализираме максималния брой. Ако текущата дума не съвпада с дадената дума, ще нулираме текущия брой на 0. Накрая ще върнем максималния брой.
Внедряване на JavaScript
Ето реализацията на решението в JavaScript:
function findMaxRepeatedWords(sentence, word) { let maxCount = 0; let currentCount = 0; const wordLength = word.length; let i = 0; while (i < sentence.length) { if (sentence.slice(i, i + wordLength) === word) { currentCount++; i += wordLength; } else { if (currentCount > maxCount) { maxCount = currentCount; } currentCount = 0; i++; } } if (currentCount > maxCount) { maxCount = currentCount; } return maxCount; } // Example usage const sentence = "popokpo"; const word = "po"; const maxRepeated = findMaxRepeatedWords(sentence, word); console.log(maxRepeated); // Output: 2
Внедряване на Python
Ето реализацията на Python на решението:
def find_max_repeated_words(sentence, word): max_count = 0 current_count = 0 word_length = len(word) i = 0 while i < len(sentence): if sentence[i:i + word_length] == word: current_count += 1 i += word_length else: if current_count > max_count: max_count = current_count current_count = 0 i += 1 if current_count > max_count: max_count = current_count return max_count # Example usage sentence = "popokpo" word = "po" max_repeated = find_max_repeated_words(sentence, word) print(max_repeated) # Output: 2
Обяснение на решението
- Ние инициализираме променливите
maxCount
иcurrentCount
, за да следим съответно максималния брой и текущия брой повтарящи се думи. Също така съхраняваме дължината на дадената дума в променливатаwordLength
. - Ние итерираме през знаците на изречението, използвайки
for
цикъл. Тъй като проверяваме поднизове с дължинаword.length
, трябва да повторим само доsentence.length - word.length + 1
. - За всяка итерация извличаме текущия подниз с дължина
word.length
с помощта на методаslice()
. - Сравняваме текущия подниз с дадената дума. Ако съвпадат, увеличаваме
currentCount
и проверяваме дали надвишаваmaxCount
. Ако това стане, актуализираме съответноmaxCount
. - Ако текущият подниз не съвпада с дадената дума, нулираме
currentCount
на 0. - След итерация през цялото изречение връщаме
maxCount
, което представлява максималния брой пъти, когато думатаb
се повтаря вa
.
Заключение
В тази публикация в блога изследвахме просто решение на JavaScript и Python, за да намерим максималния брой повторения на дума в изречение. Използвайки подход на плъзгащ се прозорец, ние ефективно итерираме през изречението и следим максималния брой повтарящи се думи. Това решение може лесно да се внедри в JavaScript и предоставя ефективен начин за решаване на този проблем.
Надявам се, че сте намерили тази публикация в блога за полезна. Благодаря ви, че прочетохте! Честито кодиране!
👋 Здравейте! Ако имате горещи въпроси или просто искате да кажете здрасти, не се срамувайте – аз съм само на едно съобщение. 💬 Можете да се свържете с мен на [email protected].
🤝 Между другото, мисля, че споделяме еднакъв интерес към софтуерното инженерство — „нека се свържем в LinkedIn!“ 💻