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

做红酒的网站有哪些企业seo自助建站系统

做红酒的网站有哪些,企业seo自助建站系统,线上广告代理平台,推广营销方式有哪些745. 前缀和后缀搜索 - 力扣(LeetCode) 可以参考这两个: LeetCode第 208 题:实现Trie(前缀树)(C)qq_32523711的博客-CSDN博客. LeetCode第 211 题:添加与搜索单词 - 数据结构设计(C)qq_32523711的博客-CSDN博客. 稍…

745. 前缀和后缀搜索 - 力扣(LeetCode)

可以参考这两个:

LeetCode第 208 题:实现Trie(前缀树)(C++)qq_32523711的博客-CSDN博客.

LeetCode第 211 题:添加与搜索单词 - 数据结构设计(C++)qq_32523711的博客-CSDN博客.

稍有区别。

这一题我们不需要查询单词存在与否,所以节点TrieNode就不需要isEnd成员变量了,因为我们只是需要处理前缀后缀而已。

前缀的处理很简单,顺着树查找,就是startsWith函数,后缀可以转化为前缀处理(相应地构建一棵后缀树,单词翻转即可)。

那么还有一点就是权值的处理,本题中权值就是该单词在数组words中的下标,处理方式就是给节点TrieNode增加一个成员变量weight,用于记录根节点到该节点的子串是哪些单词的前缀(也就是记录下标值),具体可以看图:

在这里插入图片描述

class Trie{
public:struct TrieNode{//每个节点都有一个权值数组,记录了路径会经过该节点的word的权值//根据题意,权值其实就是该单词在words中对应的下标//如果访问到这个节点,那么root到当前节点的子串是某些word的前缀//怎么找到这些word呢?这些word在原数组words中的下标存储在weight数组里面vector<int> weight;TrieNode* next[26] = {NULL};};Trie() : root(new TrieNode) {}void insert(string &word, int weight){TrieNode* p = root;for(int i = 0; i < word.size(); ++i){int idx = word[i] - 'a';if(p->next[idx] == NULL)p->next[idx] = new TrieNode;p = p->next[idx];p->weight.push_back(weight);//添加权值}}vector<int>* startsWith(string &prefix){TrieNode* p = root;for(int i = 0; i < prefix.size(); ++i){int idx = prefix[i] - 'a';if(p->next[idx] == NULL) return NULL;p = p->next[idx];}return &(p->weight);}
private:TrieNode* root;
};class WordFilter {
public:WordFilter(vector<string>& words) : pre(new Trie), suf(new Trie), count(words.size()){for(int i = 0; i < words.size(); ++i){pre->insert(words[i], i);reverse(words[i].begin(), words[i].end());suf->insert(words[i], i);}}int f(string prefix, string suffix) {if(prefix.empty() && suffix.empty())  return count-1;//特殊情况auto pre_v = pre->startsWith(prefix);reverse(suffix.begin(), suffix.end());//这儿也需要先翻转auto suf_v = suf->startsWith(suffix);if(!pre_v || !suf_v)  return -1; //任意一个为空指针,代表没有找到if(prefix.empty()) return *(suf_v->end()-1);//空指针,返回后缀字典树中的最大权重if(suffix.empty())  return *(pre_v->end()-1);//空指针,返回前缀字典树中的最大权重vector<int>::iterator it1 = pre_v->end()-1, it2 = suf_v->end()-1;      while(it1 >= pre_v->begin() && it2 >= suf_v->begin()){//从后往前查找,因为后面的更大if(*it1 == *it2)    return *it1;*it1 < *it2 ? --it2 : --it1;}return -1;}
private:Trie *pre;//前缀树Trie *suf;//后缀树int count; //记录树里面的单词个数
};
http://www.lbrq.cn/news/2647909.html

相关文章:

  • 学生个人网站模板有了域名如何建立网站
  • 在线旅游网站建设方案微博推广方法有哪些
  • 免费企业网站建设要求什么平台免费推广效果最好
  • 做婚庆网站图片下载网站群发推广软件
  • 软件外包属于什么行业seo关键词排名网络公司
  • 建设新闻网站需要注意什么seo推广seo技术培训
  • 学校网站怎么做的正规seo多少钱
  • 南京做网站南京乐识专业如何进行网络推广
  • 放心营销网站开发青岛seo培训
  • 全国工程建设行业优秀网站合肥网站优化软件
  • 图片在线制作加字seo工作
  • 与网站签约守游网络推广平台
  • 呼和浩特网站制作怎么自己做网站推广
  • 南通网站备案google play store
  • 现在网站开发用什么小程序开发
  • 建设营销型网站的要素优化防疫政策
  • 网站上的定位怎么做推广通
  • 潍坊专业人员继续教育网络平台登录优化师的工作内容
  • 怎样做网站店铺品牌如何做推广
  • 做网站UI工具百度网页版下载安装
  • 网站建设为中心有道搜索引擎入口
  • 韩国最新新闻消息吉林刷关键词排名优化软件
  • 做网络销售哪些网站比较好如何自己做引流推广
  • 动态ip地址做网站seo网站优化快速排名软件
  • 网站开发类的合同下载app
  • 礼叮当 一家做创意礼品定制的网站搜索引擎网站
  • 企业网站建设需要什么企业策划方案怎么做
  • 做网站如何推广优化公司怎么优化网站的
  • php网站开发 实战教程针对百度关键词策划和seo的优化
  • 网站如何防止被攻击百度下载老版本
  • 本文章分享一个本地录音和实时传输录音给app的功能(杰理)
  • NY128NY133美光固态闪存NY139NY143
  • 聚水潭API数据接口开发手机端网页查询商品仓位库位库存工具,支持扫描识别,预览图片
  • 【数据结构】排序(sort) -- 交换排序(冒泡快排)
  • 无人机航拍数据集|第6期 无人机垃圾目标检测YOLO数据集772张yolov11/yolov8/yolov5可训练
  • Pytest项目_day04(Python做接口请求)