当前位置: 首页 > news >正文

宝应网站建设营销型网站建设服务

宝应网站建设,营销型网站建设服务,哈尔滨自助模板建站,新手做亚马逊要逛哪些网站1--前缀树的实现 前缀树的每一个节点拥有三个成员变量&#xff0c;pass表示有多少个字符串经过该节点&#xff0c;end表示有多少个字符串以该节点结尾&#xff0c;nexts表示该字符串可以走向哪些节点&#xff1b; #include <iostream> #include <unordered_map>str…

1--前缀树的实现

        前缀树的每一个节点拥有三个成员变量,pass表示有多少个字符串经过该节点,end表示有多少个字符串以该节点结尾,nexts表示该字符串可以走向哪些节点;

#include <iostream>
#include <unordered_map>struct TreeNode{TreeNode() : pass(0), end(0){}int pass; // 经过次数int end; // 是多少个字符串的结尾std::unordered_map<char, TreeNode*> nexts;
};class Trie{
public:// 构造函数Trie(){root = new TreeNode();}void insert(std::string word){if(word.length() == 0) return;TreeNode *node = root;node->pass++;for(int i = 0; i < word.length(); i++){if(node->nexts[word[i]] == NULL){ // 哈希表中没有该字符node->nexts[word[i]] = new TreeNode(); // 新建该字符}node = node->nexts[word[i]];node->pass++; // 该字符节点经过的次数++}node->end++; // 遍历word末尾时,节点的end++,表明以该节点结尾的字符串数++}bool search(std::string word){if(word.length() == 0) return true;TreeNode *cur = root;for(int i = 0; i < word.length(); i++){if(cur->nexts[word[i]] == NULL) return 0; // 没有该字符节点cur = cur->nexts[word[i]];}return cur->end; // end不为0表明该字符串出现过}bool startWith(std::string prefix){if(prefix.length() == 0) return 0;TreeNode *cur = root;for(int i = 0; i < prefix.length(); i++){if(cur->nexts[prefix[i]] == NULL) return 0; // 前缀没出现过cur = cur->nexts[prefix[i]];}return cur->pass; // 有多少个字符串经过该前缀,0个表明false;}private:TreeNode *root;
};int main(int argc, char *argv[]){Trie T1;std::string test1 = "hello";T1.insert(test1);bool res1 = T1.search(test1);if(res1) std::cout << "true" << std::endl;else std::cout << "false" << std::endl;bool res2 = T1.startWith("hel");if(res2) std::cout << "true" << std::endl;else std::cout << "false" << std::endl;return 0;
}

2--LeetCode真题

2-1--实现Trie(前缀树)

         本题不能自定义节点,因此将 pass、end 和 nexts 等成员变量转换成类的成员变量,新节点就是类的对象;

class Trie{
public:// 构造函数Trie(){}void insert(std::string word){if(word.length() == 0) return;Trie *node = this;node->pass++;for(int i = 0; i < word.length(); i++){if(node->nexts[word[i]] == NULL){ // 哈希表中没有该字符node->nexts[word[i]] = new Trie(); // 新建该字符}node = node->nexts[word[i]];node->pass++; // 该字符节点经过的次数++}node->end++; // 遍历word末尾时,节点的end++,表明以该节点结尾的字符串数++}bool search(std::string word){if(word.length() == 0) return true;Trie *cur = this;for(int i = 0; i < word.length(); i++){if(cur->nexts[word[i]] == NULL) return 0; // 没有该字符节点cur = cur->nexts[word[i]];}return cur->end; // end不为0表明该字符串出现过}bool startsWith(std::string prefix){if(prefix.length() == 0) return 0;Trie *cur = this;for(int i = 0; i < prefix.length(); i++){if(cur->nexts[prefix[i]] == NULL) return 0; // 前缀没出现过cur = cur->nexts[prefix[i]];}return cur->pass; // 有多少个字符串经过该前缀,0个表明false;}private:int pass = 0; // 经过次数int end = 0; // 是多少个字符串的结尾std::unordered_map<char, Trie*> nexts;
};

http://www.ds6.com.cn/news/73695.html

相关文章:

  • 苹果cms做网站百度一下官网入口
  • wordpress怎么做两个语言网站游戏推广员招聘
  • 博物馆网站 微信 微博 建设网络关键词优化方法
  • 医程通 网站做的太资源网站排名优化seo
  • 网站社区建设深圳网站建设方案
  • 涞源县住房和城乡建设局网站长春seo结算
  • 做建网站的工作一年赚几百万seo优化工作内容做什么
  • 怎么找做网站客服的工作谷歌应用商店app下载
  • 会员登录系统网站建设百度首页纯净版怎么设置
  • debion搭建wordpressseo优化查询
  • wordpress邮箱服务器怎样优化网络
  • 企业网站建设cms站百度关键词搜索量排行
  • 网站代码优化多少钱常见的网络推广方式有哪些
  • 织梦手机网站模板删除不了网站排名靠前的方法
  • 河北网站建设开发班级优化大师官网
  • 招聘网站数据分析要怎么做线上广告接单平台
  • 优化比较好的网站泉州seo外包
  • 婚姻网站建设注意事项抖音推广方案
  • wordpress 仿站步骤数字营销公司排行榜
  • 网站引流怎么做千锋教育的it培训怎么样
  • 天津做网站的公司排行新手怎么做网络推广
  • 上海网站建设公司兴田德润优惠吗深圳全网营销型网站
  • wordpress广告贵州百度seo整站优化
  • 企业怎么做网站建设创意营销案例
  • 株洲网站制作网页设计代码案例
  • 韩国有哪些做潮牌的网站广告联盟app推广
  • 临沂网站制作策划百度竞价返点开户
  • 网站建设与管理pdf百度一下首页问问
  • 带做网站价位嘉兴seo报价
  • 网站后台英文seo搜索优化专员