字符串算法之字典树

原创 2016年05月31日 17:55:03

目标算法:字典树

应用范围:统计拥有相同前缀的字符串

#include<cstdio>
#include<iostream>
#include<cstring>
#include<cstdlib>
using namespace std;

typedef struct Trie{
    int cnt;
    Trie *next[26];
}Trie;

Trie root;

void createTrie(char *str)
{
    int len = strlen(str);
    Trie *p = &root;
    Trie *q;
    for(int i=0;i<len;i++)
    {
        int id = str[i] - 'a';
        if(p -> next[id] == NULL)
        {
            q = (Trie *)malloc(sizeof(root));
            q -> cnt = 1;
            for(int j=0;j<26;j++)
            {
                q -> next[j] = NULL;
            }
            p -> next[id] = q;
            p = p -> next[id];
        }
        else
        {
            p -> next[id] -> cnt++;
            p = p -> next[id];
        }
    }
}

int findTrie(char *str)
{
    int len = strlen(str);
    Trie *p = &root;
    for(int i=0;i<len;i++)
    {
        int id = str[i] - 'a';
        p = p -> next[id];
        if(p == NULL)
        {
            return 0;
        }
    }
    return p->cnt;
}

int main()
{
    char str[15];
    for(int i=0;i<26;i++)
    {
        root.next[i] = NULL;
    }
    while(gets(str) && str[0] != '\0')
    {
        createTrie(str);
    }
    memset(str,0,sizeof(str));
    while(~scanf("%s",str))
    {
        int ans = findTrie(str);
        printf("%d\n",ans);
    }
}


 

版权声明:本文为博主原创文章,未经博主允许不得转载。

字符串匹配算法之二------Trie字典树

Trie算法: #include #include #include #include using namespace std; const int MAX = 26; class Trie...
  • cwlmxmz
  • cwlmxmz
  • 2015年12月29日 13:01
  • 228

字典树求公共前缀字符串数目

  • 2014年03月13日 20:08
  • 204KB
  • 下载

敏感词检索工程(字典树算法)

  • 2016年11月23日 18:31
  • 13.66MB
  • 下载

字符串字典树判重Linux内核代码风格

背景:LeetCode - 127. Word Ladder 解决: 简单的广搜,用C++真的太好实现了,STL确实强大,但是用C语言来写呢?其实关键点就在于字符串如何判重,STL里的set可以搞...

字典树(ACM算法)

  • 2008年09月29日 11:57
  • 59KB
  • 下载

算法学习之字典树

  • 2012年06月25日 17:01
  • 62KB
  • 下载

NEU1007: English Game 字典树排序 字符串处理

题目描述: This English game is a simple English words connection game. The rules are as follows: the...

常用数据结构字典树算法

  • 2008年10月15日 14:48
  • 181KB
  • 下载

ACM-字符串-字典树

字典树

Codeforces 557E Ann and Half-Palindrome (字典树+字符串排序)

题意:找出s的子串中字典序第k小的“半回文串”,给出半回文串定义是:对于任意i 思路:枚举字符串长度,然后O(n*n)判定所有字符串是否是半回文串,剩下要做的就是给这些字符串排序,如果直接排序,时间复...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:字符串算法之字典树
举报原因:
原因补充:

(最多只允许输入30个字)