Tell bokstaver med en frekvenstabell
Tell tegn ved hjelp av en dict eller array
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']) # 2Manglende 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']) # 0Metoden 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')] += 1Avveiningen 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. 🎉
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
- Triks med tegn, ord og chr
- Tell bokstaver med en frekvenstabell
- Palindromsjekker på riktig måte
- Del opp, strip og sett sammen ord igjen