Когато работите с низове, понякога може да се наложи да намерите максималния брой повторения на конкретна дума в изречение. В тази публикация в блога ще разгледаме просто и ефективно решение на 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

Обяснение на решението

  1. Ние инициализираме променливите maxCount и currentCount, за да следим съответно максималния брой и текущия брой повтарящи се думи. Също така съхраняваме дължината на дадената дума в променливата wordLength.
  2. Ние итерираме през знаците на изречението, използвайки for цикъл. Тъй като проверяваме поднизове с дължина word.length, трябва да повторим само до sentence.length - word.length + 1.
  3. За всяка итерация извличаме текущия подниз с дължина word.length с помощта на метода slice().
  4. Сравняваме текущия подниз с дадената дума. Ако съвпадат, увеличаваме currentCount и проверяваме дали надвишава maxCount. Ако това стане, актуализираме съответно maxCount.
  5. Ако текущият подниз не съвпада с дадената дума, нулираме currentCount на 0.
  6. След итерация през цялото изречение връщаме maxCount, което представлява максималния брой пъти, когато думата b се повтаря в a.

Заключение

В тази публикация в блога изследвахме просто решение на JavaScript и Python, за да намерим максималния брой повторения на дума в изречение. Използвайки подход на плъзгащ се прозорец, ние ефективно итерираме през изречението и следим максималния брой повтарящи се думи. Това решение може лесно да се внедри в JavaScript и предоставя ефективен начин за решаване на този проблем.

Надявам се, че сте намерили тази публикация в блога за полезна. Благодаря ви, че прочетохте! Честито кодиране!

👋 Здравейте! Ако имате горещи въпроси или просто искате да кажете здрасти, не се срамувайте – аз съм само на едно съобщение. 💬 Можете да се свържете с мен на [email protected].

🤝 Между другото, мисля, че споделяме еднакъв интерес към софтуерното инженерство — „нека се свържем в LinkedIn!“ 💻