Sobes.tech
Intern
33

""" Берілген жол таңбалардан тұрады. i және j индекстерінің жұптарының санын табыңыз (i <= j), олар арасында қайталанатын таңбалар жоқ. "aba" жолы үшін жауап 5: [0, 0] ("a") [0, 1] ("ab") [1, 1] ("b") [1, 2] ("ba") [2, 2] ("a") "abcb" жолы үшін жауап ?: aba 3 + 2 = 5 abcb a ab b abc bc c cb b 4(а, b, c, d) + 1(ab) + 1(bc) + 1(cb) + 1(abc) = 8 """

Сұралған компаниялар
Яндекс

AI-дан жауап

sobes.tech AI

Міндет — [i, j] индекс жұптарының санын табу (i ≤ j), мұнда s[i..j] ішіндегі барлық таңбалар бірегей.

"abcb" жолы үшін қайталанбайтын таңбалардан тұратын барлық ішкі жолдарды қарастырайық:

  • [0,0] "a"
  • [0,1] "ab"
  • [1,1] "b"
  • [1,2] "bc"
  • [2,2] "c"
  • [2,3] "cb"
  • [3,3] "b"

Барлығы 7 ішкі жол.

Мынау Go тілінде екі көрсеткіш пен таңбаларды бақылау үшін жиын қолданатын мысал шешім:

def countUniqueSubstrings(s string) int {
    count := 0
    n := len(s)
    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
}

// Мысал шақыру
// fmt.Println(countUniqueSubstrings("abcb")) // Нәтижесі 7

Алгоритм O(n) уақытында жұмыс істейді, ол кеңейіп, қысқарып, барлық бірегей таңбалардан тұратын ішкі жолдарды есептейді.