Intern
/* Додани ҳарфҳои сатр. Биёед шумораи ҷуфтҳои индекс i ва j (i <= j)-ро пайдо кунем, ки байни онҳо такрор нашудааст. Барои сатр "aba" ҷавоб 5: мумкин аст ASCII [0, 0] ("a") [0, 1] ("ab") [1, 1] ("b") [1, 2] ("ba") [2, 2] ("a") */
sobes.tech AI
Ҷавоб аз AI
Барои ҳалли масъала, бояд ҳамаи зерҳудудҳои сатрро гузаронем ва санҷем, ки дар ҳар зерҳудуд ягон аломат такрор нашудааст. Барои ин самаранок, метавонем аз тирезаҳои ҳаракаткунанда бо ду нишондиҳанда ва маҷмӯа барои пайгирии аломатҳои беназир истифода барем.
Масалан дар Go:
func countUniqueSubstrings(s string) int {
n := len(s)
count := 0
chars := make(map[byte]bool)
j := 0
for i := 0; i < n; i++ {
for j < n && !chars[s[j]] {
chars[s[j]] = true
j++
}
count += j - i
delete(chars, s[i])
}
return count
}
// Мисоли истифода:
// s := "aba"
// fmt.Println(countUniqueSubstrings(s)) // 5-ро мебарорад
Назария: мо нишондиҳандаи ростро j то он даме, ки аломатҳо беназир бошанд, васеъ мекунем, пас нишондиҳандаи чапро i ҳаракат медиҳем ва аломатҳоро аз маҷмӯа хориҷ мекунем. Сониян, шумораи зерҳудудҳои беназир, ки бо i оғоз мешаванд, баробар бо j - i аст.