CSES - Jakauma

Tehtäväsi on muodostaa jakauma merkkijonon erilaisten osajonojen pituuksista.

Esimerkiksi merkkijonossa abab erilaiset osajonot ovat a, b, ab, ba, aba, bab ja abab. Tässä tapauksessa jakauma on seuraava:

  • pituus 1: osajonojen määrä 2
  • pituus 2: osajonojen määrä 2
  • pituus 3: osajonojen määrä 2
  • pituus 4: osajonojen määrä 1

Toteuta tiedostoon distribution.py funktio create_distribution, joka muodostaa parametrina annetun merkkijonon erilaisten osajonojen jakauman. Funktion tulee palauttaa jakauma sanakirjana esimerkkien mukaisesti.

Funktiota testataan eri tilanteissa, joissa merkkijonon pituus on enintään 20 merkkiä ja se muodostuu merkeistä az. Funktion tulee toimia tehokkaasti kaikissa tällaisissa tapauksissa.

def create_distribution(string):
    # TODO

if __name__ == "__main__":
    print(create_distribution("aaaa"))
    # {1: 1, 2: 1, 3: 1, 4: 1}
    
    print(create_distribution("abab"))
    # {1: 2, 2: 2, 3: 2, 4: 1}
    
    print(create_distribution("abcd"))
    # {1: 4, 2: 3, 3: 2, 4: 1}

    print(create_distribution("abbbbbb"))
    # {1: 2, 2: 2, 3: 2, 4: 2, 5: 2, 6: 2, 7: 1}

    print(create_distribution("aybabtu"))
    # {1: 5, 2: 6, 3: 5, 4: 4, 5: 3, 6: 2, 7: 1}