首页 > 代码库 > [搜索]一种分词方法的实现
[搜索]一种分词方法的实现
加上有一句话,thisisabook,要将之分成合适的单词,假设有一个字典,这个字典包含单词。
我刚看到这个需求,第一反应是用搜索中的分词方式,最大匹配法,后来经过高人指点,说不用,只需要遇到正确的单词就分出来,然后又想到了回溯法,再次经高人指点,回溯也不需要,只需要递归即可。下面是简单的实现代码,供参考:
char *dict[]={"a","is","book","boo","this"}; bool isword(char* wd) { for(int i=0;i<sizeof(dict)/sizeof(dict[0]);i++) { if(strcmp(dict[i],wd) == 0) return true; } return false; } bool splitter(const char* src) { char word[100]={0}; int i=0; int nlen = strlen(src); if(nlen == 0) return true; for(i=0;i<nlen;i++) { strncpy(word,src,i+1); if(isword(word)) { if(splitter(src+i+1)) { printf("word=%s\n",word); return true; } } } if(i >= nlen) return false; return true; }
假设调用splitter("thisisabook");则执行结果为:
word=book
word=a
word=is
word=this
有没有办法从前往后输出单词呢?
[搜索]一种分词方法的实现
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。