Önek İçeren Kelimeleri Say
Coddy'nin Trie - Veri Yapıları Serisi #8 kursunda ders 11 / 14.
Belirli bir önekle başlayan kaç tane saklanmış kelime var? Her kelimeyi ekledikten sonra, kökten başlayarak önek boyunca her seferinde bir karakter ilerleyin. Eğer herhangi bir karakter eksikse, cevap sıfırdır - hiçbir kelime bu önekle başlayamaz.
Önekin sonuna ulaştığınızda, bir düğüme varırsınız. Bu önekle başlayan her saklanmış kelime, kökü orası olan alt ağacın bir yerinde bulunur. Alt ağacı dolaşarak ve isEndOfWord değerinin true olduğu her düğüm için 1 ekleyerek bunları sayın.
Görev
KolayBir dize dizisi words ve bir dize prefix alan ve dizide verilen önekle başlayan kelimelerin sayısını döndüren bir countWordsWithPrefix fonksiyonu yazın.
Boş bir önek her kelimeyle eşleşir.
Trie sınıfını kullanmalısınız (trienode ile birlikte trie içinde sağlanmıştır) - sayma veya izleme işlemleri için kümeler (sets), sözlükler (dicts) veya eşlemler (maps) gibi dile özgü yerleşik yapıları kullanmayın.
Kendin dene
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "solution.h"
int main() {
char l1[4096], prefix[1024];
if (!fgets(l1, sizeof(l1), stdin)) l1[0] = 0;
if (!fgets(prefix, sizeof(prefix), stdin)) prefix[0] = 0;
l1[strcspn(l1, "\r\n")] = '\0';
prefix[strcspn(prefix, "\r\n")] = '\0';
char* words[1024]; int n = 0;
char* tok = strtok(l1, " \t");
while (tok && n < 1024) { words[n++] = tok; tok = strtok(NULL, " \t"); }
printf("%d\n", countWordsWithPrefix(words, n, prefix));
return 0;
}
Trie - Veri Yapıları Serisi #8 bölümündeki tüm dersler
3Pratik Zorluklar
En Uzun Ortak ÖnekÖnek İçeren Kelimeleri SayOtomatik TamamlamaSözlükteki En Uzun KelimeKelime Bölme