Forberedelse til kodeintervjuer · leksjon

Tell bokstaver med en frekvenstabell

Tell tegn ved hjelp av en dict eller array

Leksjon 2 av 413 trinn

Tell bokstaver med en frekvenstabell er en gratis leksjon i Forberedelse til kodeintervjuer på CoddyKit. Dette er leksjon 2 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Forberedelse til kodeintervjuer, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Forberedelse til kodeintervjuer inneholder totalt 4 leksjoner.

Hvorfor telle tegn

Mange strengoppgaver koker ned til ett spørsmål: Hvor ofte forekommer hvert tegn? En frekvenstabell svarer på det i én gjennomgang. 📊

Dict-metoden

En vanlig dict kobler hvert tegn til antallet forekomster. Den fungerer for alle alfabet, inkludert Unicode og symboler.

freq = {}
for ch in 'apple':
    freq[ch] = freq.get(ch, 0) + 1
print(freq)

get() unngår KeyError

Hvis du bruker get(ch, 0), returneres 0 når nøkkelen mangler. Dermed starter en bokstav på én første gang du ser den.

Counter gjør jobben for deg

Klassen Counter fra collections bygger hele tabellen på én linje. Den er en favoritt i konkurranseprogrammering på grunn av fart og tydelighet.

from collections import Counter
freq = Counter('apple')
print(freq['p'])  # 2

Manglende nøkler gir null

En Counter utløser aldri en feil for en manglende nøkkel. Hvis du spør etter en bokstav du aldri har sett, får du bare 0, slik at koden ikke trenger en egen gren.

from collections import Counter
c = Counter('abc')
print(c['z'])  # 0

Metoden med en fast array

Hvis du bare har små bokstaver, er en liste med 26 plasser enda raskere. Indekser hver bokstav med ord-matematikk og øk telleren.

cnt = [0] * 26
for ch in 'apple':
    cnt[ord(ch) - ord('a')] += 1

Avveiningen mellom array og dict

Arrayen er raskest, men fungerer bare for et kjent og lite alfabet. Dict eller Counter håndterer alle tegn, mot en liten kostnad.

Finn den vanligste

Counter gir deg most_common(k), som returnerer de k vanligste tegnene, allerede sortert etter frekvens. Du trenger ikke sortere manuelt.

from collections import Counter
print(Counter('mississippi').most_common(1))

Sammenlign to tabeller

To strenger er anagrammer nøyaktig når frekvenstabellene deres er like. Å sammenligne to Counter-objekter krever bare én linje.

from collections import Counter
print(Counter('listen') == Counter('silent'))  # True

Én gjennomgang er nok

Å bygge tabellen tar O(n), altså én gjennomgang av strengen. Etterpå tar hvert oppslag konstant tid.

Trekk fra for å finne overskudd

Counter støtter subtraksjon, slik at du kan finne hvilke tegn den ene strengen har som den andre mangler. Dette er nyttig i oppgaver av typen ransom note.

from collections import Counter
print(Counter('aabb') - Counter('ab'))

Hurtigsjekk

Et spørsmål om opptelling av tegn.

Oppsummering

Nå kan du telle tegn med en dict, en Counter eller en array med 26 plasser, og bruke disse tabellene til å teste anagrammer og finne vanlige bokstaver. 🎉

Gratis å komme i gang

Lær deg Forberedelse til kodeintervjuer med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
90
Leksjoner
360

Ofte stilte spørsmål

Er leksjonen «Tell bokstaver med en frekvenstabell» gratis?

Ja – hele teksten i «Tell bokstaver med en frekvenstabell» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Forberedelse til kodeintervjuer-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Forberedelse til kodeintervjuer inneholder totalt 4 leksjoner.

Hva lærer jeg i «Tell bokstaver med en frekvenstabell»?

Tell tegn ved hjelp av en dict eller array Du øver på Forberedelse til kodeintervjuer med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Forberedelse til kodeintervjuer?

Ingen tidligere erfaring er nødvendig. Forberedelse til kodeintervjuer på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 2 av 4.

Hvor lang tid tar leksjonen «Tell bokstaver med en frekvenstabell»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Forberedelse til kodeintervjuer-leksjonen?

Ja. Alle Forberedelse til kodeintervjuer-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Triks med tegn, ord og chr
  2. Tell bokstaver med en frekvenstabell
  3. Palindromsjekker på riktig måte
  4. Del opp, strip og sett sammen ord igjen
← Tilbake til Forberedelse til kodeintervjuer