136 / 205
LeetCode · MediumO'rta20 ball· ~20 daqiqa

Permutation in String

Sizga ikkita s1 va s2 satrlari berilgan. Agar s1 ning ixtiyoriy permutatsiyasi (harflar joyini almashtirib hosil qilingan shakl) s2 satrining qism-satri (substring) bo'lsa true, aks holda false qaytaring.

example.go
func solve(s1 string, s2 string) bool {
    // ...
}

Misollar

kod
Input: s1 = "ab", s2 = "eidbaooo"
Output: true
Tushuntirish: s2 ning "ba" qism-satri s1 ning permutatsiyalaridan biridir.
kod
Input: s1 = "ab", s2 = "eidboaoo"
Output: false
kod
Input: s1 = "a", s2 = "a"
Output: true
kod
Input: s1 = "abc", s2 = "ab"
Output: false

Maslahatlar

  1. s1 ning permutatsiyasi degani — uzunligi s1 bilan bir xil bo'lgan va harflar chastotasi (har bir harf necha marta uchrashi) bir xil bo'lgan qism-satr degani; shuning uchun belgilangan o'lchamli oyna (fixed-size sliding window) va harf sanoqlarini solishtirish g'oyasini o'ylab ko'ring.
  2. s1 dagi har bir harfning chastotasini hisoblang, so'ng s2 ustida uzunligi len(s1) bo'lgan oynani bir pozitsiyaga siljitib boring — har safar oynaga kirgan harfning sonini oshirib, chiqib ketgan harfning sonini kamaytiring; agar oynadagi chastotalar to'plami s1 nikiga aynan teng bo'lsa, true qaytaring.