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
}

Այս կոդը ստեղծում է անհրաժեշտ նիշերի հավաքածու, որը հետո հեռացվում է, երբ դրանք հայտնաբերվում են պատուհանում: Եթե վերջում հավաքածուն դատարկ է, նշանակում է, որ բոլոր նիշերը գտնվել են։