From 5be8d48a18828f4d62f41a5a8242cc6e94085a11 Mon Sep 17 00:00:00 2001 From: wyy Date: Mon, 24 Jun 2013 15:35:12 +0800 Subject: [PATCH] finished trie'cut --- Trie.cpp | 46 ++++++++++++++++++++++++++++++++++++++++------ Trie.h | 2 ++ 2 files changed, 42 insertions(+), 6 deletions(-) diff --git a/Trie.cpp b/Trie.cpp index 0d26c68..da6b5d4 100644 --- a/Trie.cpp +++ b/Trie.cpp @@ -91,6 +91,26 @@ namespace CppJieba return p->isLeaf; } + bool Trie::cut(const ChUnicode* chUniStr, size_t len, vector< vector >& res) + { + res.clear(); + cout<()); + vector& vec = res[i]; + for(size_t j = i; j < len; j++) + { + if(find(chUniStr + i, j - i + 1)) + { + vec.push_back(j); + } + } + } + return true; + } + bool Trie::_destroyNode(TrieNode* node) { for(TrieNodeHashMap::iterator it = node->hmap.begin(); it != node->hmap.end(); it++) @@ -161,13 +181,27 @@ int main() //trie.init("test/dict.txt"); trie.init("dict.txt"); //trie.display(); - const char * utf = "B"; - ChUnicode chUniStr[16]; - int uniLen = utf8ToUnicode(utf, sizeof(utf), chUniStr); - cout< > res; + cout< hmap; //hmap[136]=1; return 0; diff --git a/Trie.h b/Trie.h index 9565c69..55e065b 100644 --- a/Trie.h +++ b/Trie.h @@ -3,6 +3,7 @@ #include #include #include +#include #include "cppcommon/str_functs.h" #include "cppcommon/vec_functs.h" #include "cppcommon/logger.h" @@ -34,6 +35,7 @@ namespace CppJieba bool destroy(); void display(); bool find(const ChUnicode* chUniStr, size_t len); + bool cut(const ChUnicode* chUniStr, size_t len, vector< vector >& res); private: bool _destroyNode(TrieNode* node); void _display(TrieNode* node, int level);