Menu
Coddy logo textTech

Ö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.

challenge icon

Görev

Kolay

Bir 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