Sobes.tech
Senior

Терезеде бардык керектүү белгилер бар экенин кантип текшерсе болот?

sobes.tech AI

AIден жооп

Терезе (мисалы, кесим же сап) бардык зарыл белгилерди камтыйт деп текшерүү үчүн, бир нече ыкмаларды колдонсо болот. Анын эң кеңири тарагандарынын бири — талап кылынган ар бир белгинин терезеде бар-жогун map (карта) аркылуу саноо же булев белгилерди колдонуу.

Go тилинде мисал, анда string 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
}

Бул код зарыл болгон белгилердин топтомун түзөт, жана аларды терезеде таба турган сайын алып салат. Эгер акырында топтом бош болсо, бардык белгилер табылган болот.