Sobes.tech
Senior

Как да проверите дали прозорецът съдържа всички необходими символи?

sobes.tech AI

Отговор от AI

За да проверите дали прозорецът (например, срез или ред) съдържа всички необходими символи, можете да използвате няколко подхода. Един от най-разпространените е да проверите наличието на всеки изискван символ в прозореца с помощта на карта (map) за броене или булеви флагове.

Пример на Go, където трябва да проверите дали низът съдържа всички символи от набора requiredChars:

func containsAllChars(window string, requiredChars string) bool {
    needed := make(map[rune]bool)
    for _, ch := range requiredChars {
        needed[ch] = true
    }

    for _, ch := range window {
        if needed[ch] {
            delete(needed, ch)
        }
    }

    return len(needed) == 0
}

Този код създава множество от необходими символи, които след това се премахват при намирането им в прозореца. Ако в края множеството е празно, всички символи са намерени.

За по-сложни задачи (например, с вземане предвид на броя на всеки символ) може да се използва map[rune]int и да се сравняват честотите.